Add exponentiation and modulus to mathops
Names can also be mathops
A program is 0 or more forms
A form is a definition or expression
Define definition
Change whitespace to ws
Add a keyword token
Change name to identifier and break out mathop

Now identifiers cannot be keywords.