##############################################################################
ABSTRACT SYNTAX
##############################################################################
P = Program { D } E
D = ClassDef name [ name ] { M }
# where [ name ] corresponds to [ "extends" ident ] in the concrete syntax
M = FieldDecl name T
| MethodDef name { name T } T E
# where { name T } corresponds to [ Formal { "," Formal } ] in the con. syntax
T = ClassType name
| IntType
| NullType
S = While E { S }
| Var name T E
| Set name E
| Do E
| PrintInt E
| PrintChar E
E = Ident name
| New name { E }
| Select E name
| Call E name { E }
| IntLit int
| NullLit
| Unop U E
| Binop B E E
| ReadInt
| ReadChar
| If E E E
| Block { S } E
U = Not
| Neg
B = Add
| Sub
| Mul
| Div
| Mod
| Eq
| Ne
| Lt
| Le
| Gt
| Ge
| And
##############################################################################
$Id$