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


2013, Anna Clayton