M' -> program i ; Dl B Dl -> Dv Ml Ml -> Ml M | e M -> module i ( Vl ) Dv B Dv -> variables Vl | e Vl -> Vl V | V v -> Il : T ; T -> integer Ad ; | char Ad Il -> i | Il , i Ad -> e | array [ n ] B -> begin Sl end ; Sl -> S | S Sl S -> L := E ; | if C then S else S | loop Sl end ; | exit ; i ( Lp ) ; | B | read Ln ; | write Ln ; | e ; Lp -> e | Ln Ln -> L { , L } L -> i Ar Ar -> e | [ E ] E -> F { Oa F } Oa -> + | - F -> R { Om R } Om -> * | / R -> L | n | ( E ) | c C -> E Or E Or -> = | < | > | <= | >=