Forthish is a very small runtime compiler that displays source by decompiling object code. Forthish does not pretend to be a full Forth; it's more an exercise in minimalism and an experiment in runtime generation and decompilation. To run example: make && echo ok && ./forthish data/include.f data/factorial.f 12 loop i 1 + . 9 emit i 1 + factorial . cr ; View the words available: words ; To quit: CTRL-D Forthish scans a word and executes it. It does not have an 'interpret' mode. The function of most words is to place code to call the function's code into the stage buffer. Executing a semicolon runs the code in the stage. The colon word will place code to create a definition in the stage. Forthish does not recognize integers natively. Instead, the commonly used integers are named in an enumeration in data/include.f. This simplifies the kernel and inner loop. Extensions include: * 'variable name initialization ;' declare a variable and the code to initialize it * 'constant name initialization ;' declare a constant and the code to initialize it * 'enum value name1 name2 name3 ;' declare an enumeration of sequential named constants name1 == value, name2 == name1+1, name3 == name2+1 * 'vector name word1 word2 word2 ;' declare a table of function pointers * 'value table switch' add the value to the vector table and branch to that location * 'value loop definition-tail ;' execution the definition-tail for i in value..0 * 'value if definition-tail ;' if value is true the execute definition-tail else return * 'value while definition-tail ;' while top of stack is true do execute definition-tail