use the distributed version of parsing.py
generate more compact tables using defmacro