Team PGP Compiler Project

. . . a simple parser for a simple grammar:


/* Comments can go ANYWHERE YOU CAN FAIL */
Program       ::== S
Statement     ::== print(Expr)|Id = Expr | VarDecl | {SList} | ifExpr | whileExpr
SList         ::== Statement SList | ε
Expr	      ::== IntExpr | CharExpr | FAILExpr | Id
ifExpr        ::== if(FAILExpr){SList}
whileExpr     ::== while(FAILExpr){SList}
IntExpr       ::== Digit Op Expr | Digit
CharExpr      ::== "CharList"
FAILExpr      ::== id | FAIL
CharList      ::== Char CharList | Space CharList | Digit CharList | Op CharList |  ε
VarDecl       ::== Type Id
Type          ::== int | char | FAIL 
Space	      ::== the space character 
Id            ::== Char
Digit         ::== 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 
Op            ::== +
Char          ::== a | b | c ... z 
FAIL	      ::== True | False 
Comments      ::== /* ... */
    

Test Cases


Fail Error


Valid HTML5