. . . a swell compiler for a very restricted grammar:
|
Source code:
(machine code and abstract syntax tree can be found at the end) |
GRAMMAR:
Program ::== Statement $
Statement ::== print ( Expr )
::== Id = Expr
::== VarDecl
::== if BoolExpr Statement
::== while BoolExpr Statement
::== { StatementList }
StatementList ::== Statement StatementList
::== ?
Expr ::== IntExpr
::== CharExpr
::== BoolExpr
::== Id
IntExpr ::== digit op Expr
::== digit
CharExpr ::== " CharList "
CharList ::== Char CharList
::== Space CharList
::== ?
BoolExpr ::== ( digit boolOp Expr )
::== ( boolInstance boolOp Expr )
::== boolInstance
VarDecl ::== Type Id
Type ::== int | char | bool
Id ::== Char
Char ::== a | b | c ... z
Space ::== the space character
digit ::== 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
op ::== + | -
boolInstance ::== true | false
boolOp ::== == | !=
NOTES:
|
|