Define the grammar
Implement the top-level parser