Parser for Stack Compiler
Grammar
program → statements statements → statement more-statements more-statements → ';' statement more-statements | empty statement → assignment-statement | write-statement | writeln-statement | if-statement | while-statement | compound-statement | empty assignment-statement → variable ':=' expression write-statement → 'write' expression writeln-statement → 'writeln' if-statement → 'if' expression 'then' statement else-part else-part → 'else' statement | empty while-statement → 'while' expression 'do' statement compound-statement → 'begin' statements 'end' expression → term ( relational-operator term ) ? relational-operator → '=' | '<>' term → factor ( adding-operator factor ) * adding-operator → '+' | '-' factor → primary-expression ( multiplying-operator primary-expression ) * multiplying-operator → '*' | 'div' | 'mod' primary-expression → NUMBER | VARIABLE | '(' expression ')'