::= := ::= true | false ::= "(" | ")" ::= "(" | ")" ::= | | | | ::= begin end ::= if then ( else | ) ::= ::= | | ::= function "(" | ")" : ; ::= procedure "(" | ")" ; ::= var : ::= ; | ; | ::= 0 | 1 | 2 | ... | 9 ::= | ::= | ::= | | "(" ")" | ::= . | . | . ::= | | ::= | ::= while do ::= a | b | c | ... | z ::= ; | ; | ::= , | ::= | , ::= | ; ::= | | ::= + | - | or ::= * | / | and ::= < | > | <= | >= | = | <> ::= ! | @ | # | ... ::= ( var | ) : ::= program ; . ::= "[" "]" | "[" "]" | ::= | ::= | ::= array [ .. ] of ::= integer | real | boolean ::= ::= ε