The is a legend about the rebirth of the dead. If omega is the last, then what comes next may be omega++, and what is coming now, after omega, but based on omega, what came last, may be omega+.
This main program thingy ("t.exe") basically builds a header file with an enum in it (such as "cmds.h"), based on a funny looking plaintext input file (such as "tcmds.txt").
This is useful because the funny looking input file can be read in as the command vocabulary for textual interfaces, such as the one which "t.exe" uses, or even a C64 immulator, which this really isn't but you know what I mean.
The commands which it uses are fairly simple (to the point of boredom):
plist - lists the primary names and values
nlist - list all names, including secondary names (aliases).
Command names can be primary (which means that they're used internally by the native code, being listed in the enum thingy), or secondary, which means they're an alias to some primary name.
The names each map onto an integer which is really a magic number (although it does no stage tricks. yet). This magic number can then be symbolically hard-coded into the native C++ code (see source code, included in the distribution files).
nlist is a semi diagnostic command, in that it prints out every single recognised (magic) name, and its respective (magic) value.
load [filename] - attempts to load an alternate vocab file.
Note that the test program actually loads two vocab files, "tcmd.txt", which it used to interpret user input, and "smt.txt", which is just a silly file I wrote while I should have been sleeping or something... in any case, the latter one is what it loaded over, and indeed, it should be loaded over because "smt.txt" is silly.
diag - diagnostics. prints out some obscure statistics, and some useful information.
e [name] - set the name of the enumeration.
default is something like "magicdata", but as you'll see from "cmds.h", it can be changed easily. use "diag" to find out
the current enumeration name.
setns [name] - sets the namespace to to given name.
use the nsclr command to chose to have no namespace name whatsoever. this will leave the enumeration implicitly in the global namespace.
setpre [name] - sets the prefix for each enumerated value. useful if you want something like "cmd_add, cmd_sub, ...".
In order to have no prefix (i.e. "add, sub, ..."), use the preclr command.
genh [filename] - generate the header from the so-called victim in memory.
For example, "cmds.h" was generated from "tcmd.txt".
It is currently impossible to change the command vocab file of the CLI after it has started, or indeed, without editing the source file, "tcmd.txt", or the more concrete C source files. However, this is useful. You can examine a separate dictionary loaded as data (we call it the "victim"), which for now is "smt.txt", but using the "load" command, above, you can load and work with anything. Moreoever, the source for the command list, "tcmd.txt", can be loaded into this data area, as well.
exit - this command exits the interpeter. "quit" is an alias.
lookup [name] - use this to lookup a command.
again, this uses the active (command vocab) memory, not the potentially mutable passive (victim) memory. Anyhow, the command name will either be found, and its primary name and value printed, or it will not be found (indicating that it doesn't exist in the current vocab).
Original Sunday, 2 Sept., 2001. Revisied Friday, 7 Sept. 2001. Revised 20 April, 2006.