The following template describes the classes. Notice that all classes inherit the line position, character position, and parent variables from Ast. All constructor functions take a lineBegin and charBegin argument before the arguments specific to the type of AST node. The parent reference will be filled in during static semantics.
Arguments surrounded by square brackets are optional arguments in the constructor methods.
Lastly, each of the list classes has an append method which will simplify the construction of linked lists from left recursive grammar rules. Remember, left recursive rules are preferred because they limit the context on the stack.