programming language
procedures & classes
program ::= classdecl* procdecl*
classdecl ::= class class { class field , }
procdecl ::= class proc ( class var , ) { stmt }
statements
stmt ::= var = term | term . field = term | return term | while pred { stmt } | if pred stmt stmt | stmt ; stmt
terms & predicates
term ::= null | var | term . field
pred ::= term == term | ! pred | pred && pred