A block structured programming language
P ? Expression, B ? Block, D ? Declaration, C ?Command,
E ? Expression, O ?Operator, I ? Identifier, N ? Numeral.
D ::= var I | procedure I, C | D1;D2
C ::= I := E | if E then C | while E do C | C1;C2 | begin B end
E ::= I | N | E1 O E2 | (E)