Slight code clarification.
Wrong word in comment.
Convert expression parser to class in anticipation of more context.
Split out scoped map functionality from Env.
Macros.
Several builtin macros: $file, $line, $shell.
Allow builtin macro calls inside macros.
Don't require word boundary for variable names.
Fix source locations of tokens generated by possibly nested macros.
$tostr macro.
Move macro stuff into MacroParser.
$inc macro.
Never produce nodent as the first token.
Reserve $ for macros. Don't require commas in $cat args.
Another shot at fixing leading indent. Updating tests.
Whoops. This totally shouldn't be here.
I think this is in a reasonable good state. Hmmm.
Remove preprocessing stuff. It was cute, but felt like extra cruft.