The current solution generates console apps (which are therefore the current download(s))  that interprets possibly multiple command line arguments as source code files or arguments. For example, assuming thor.f and zeus.f contain False source, to execute them, one would use the form:

FalseInterpterer thor.f zeus.f

And similarly for other supported languages. 


-d toggles debug file generation mode (not advised for general use)

-s toggles 'step' mode; when active, the executing interpreter will request user input after each language command is interpreted. For FALSE, this may skip lambda's, as they currently are gathered as a single object and pushed onto the FALSE stack 

-t toggles 'stack dump'; when active, each pause for user interaction when stepping will dump the TOS

-tr toggles 'deep stack dump'; when active, each pause for user interaction when stepping will dump the complete stack (for Brainfuck, this will therefore be typically quite large, due to cell pre-allocation)

-bps <x> <y> sets a breakpoint at source position x,y. Breakpoints can't be 'unset', as with other options, as they are automatically disabled when the source file being interpreted changes (even if it is the same source file)

-esc toggles 'enabled seek caching' mode, which allegedly improves the performance of the Brainfuck interpreter

-n disable the banner display when the interpreter starts

Example 1:

Execute two Brainfuck programs, the first one with step mode active, the second with step mode toggled off:

BrainFuckInterpterer -s loop.bf -s fibonacci.bf

Example 2:

Breakpoint the Befunge-93 program 'reversestring.b93', just at the point it self modifies the torus with a character from the reversed string (there is no visible output from this program after all):

Befunge-93.exe -tr -bps 32 5 reversestring.b93


It is possible to provide an app.config file to override default configuration. This is used specifically in the Befunge-93 interpreter, as below - all configuration settings are self explanatory:


<?xml version="1.0" encoding="utf-8" ?>
	<add key="retainSourceEOL" value="false"/>
	<add key="maxNumberLength" value="1"/>
	<add key="trueValue" value="1"/>
	<add key="falseValue" value="0"/>
	<add key="torusColumns" value="80"/>
	<add key="torusRows" value="25"/>



See the execution section for interpreter use. All standard commands supported, no extensions. Standard cell count is 30,000, an exception will be thrown if this is exceeded. 


See the execution section for interpreter use. All standard commands supported, no extensions. Some defects still present.


My own esoteric language, version 2.0 implements most of the spec - see specification at the esolang wiki. A prime number finder looks like this:

+A)"Enter start: ",=cu!)"Primes <= ")cu(13(10@o*cu$!2=ca!@i*cu#!ca?0?^.n<ca1:ca:1?1?^.i)cu)" "@n<cu1*cu<!1^!o)"3 2"


Language, extensions and examples

The standard FALSE language grammar (if I may) can be found at: http://strlen.com/false/false.txt.

  • This interpreter supports all False language facilities with the exception of Flush
  • The Pick operator is implemented using the opening parenthesis - '(' - instead of 0xDF

Rosetta.f, primes.f (which is more than just primes) and the test harness test.f (WIP) should all operate with the latest release.

Extended commands are supported, as below:

)st[arbitrary text]) - stacks a timer for the current point in the execution lifecycle
)ct) - pops the top timer and dumps milliseconds since creation to Console
)rs) - reset the current statistics collection
)ds) - dumps all current statistics to Console

Rosetta.f includes some examples, such as:

)stHailstone < 100,000)

Example statistics output:

Hailstone sequence length of 27 is112
rs == 1

Push == 3459

Pop == 4239

: == 3

; == 224

$ == 780

. == 113

> == 224

& == 222

% == 84

* == 82

+ == 193

~ == 304

? == 444

! == 224

/ == 140

# == 2

\ == 223

Last edited Jul 8, 2013 at 8:00 PM by aldous_zodiac, version 25


No comments yet.