Need to modularize parse.go:
 - separate method for each non-terminal
 - pass around sub-trees rather than keeping global pointer in *parse object