Anna's Compiler Project
. . . a simple parser for a simple grammar
Program ::== Statement $
Statement ::== print ( Expr )
::== Id = Expr
::== VarDecl
::== { StatementList }
::== WhileStatement
::== IfStatement
WhileStatement ::== while BooleanExpr { StatementList }
IfStatement ::== if BooleanExpr { StatementList }
StatementList ::== Statement StatementList
::== epsilon
Expr ::== IntExpr
::== StringExpr
::== BooleanExpr
::== Id
IntExpr ::== digit op Expr
::== digit
StringExpr ::== " CharList "
BooleanExpr ::== ( Expr == Expr )
::== boolVal
CharList ::== char CharList
::== space CharList
::== epsilon
VarDecl ::== type Id
Id ::== char
type ::== int | string | boolean
char ::== a | b | c ... z
space ::== the space character
digit ::== 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
boolVal ::== false | true
op ::== + | -
|
Lex Results
|
Token Stream
|
|
|
Parse Results
|
Concrete Syntax Tree
|
|
|
Scope/Type Checking Results
|
Symbol Table
|
|
|
Abstract Syntax Tree
|
Code
|
|
|
Static Table
|
Jump Table
|
|
|
|