AST and AST manipulation
Support a debug flag
use getopt
C dict/hashtable implementation