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 ')'

Parser.java

TestParser.java