13 * Compiles a complete class.
18 * Compiles a static declaration or a field declaration.
20 void parse_class_var_dec();
23 * Compiles a complete method, function or constructor.
25 void parse_subroutine();
28 * Compiles a (possibly empty) parameter list.
29 * Skips over the parentheses.
34 * Compiles a variable declaration.
39 * Compiles a sequence of statements.
40 * Skips over opening and closing braces.
42 void parse_statements();
45 * Compiles do statement.
50 * Compiles let statement.
55 * Compiles while statement.
60 * Compiles return statement.
65 * Compiles an if statement, possibly including an else statement.
70 * Compiles and expression.
72 void parse_expression();
76 * Must determine if if current token is an identifier and must
77 * distinguish between a variable, array entry or a subroutine call.
78 * The three tokens "[", "(" and "." determine the option.
79 * Any other token is not part of this term and should not be advanced over.
84 * Compiles a call to a defined subroutine.
86 void parse_subroutine_call();
89 * Compiles a (possibly empty) comma-separated list of expressions.
91 void parse_expr_lst();