ubset of Pascal is the following, in which <em>empty</em> denotes an empty production :</p>

<pre><code>start     ::= PROGRAM ident '('  identList ')' ';' decls 
          subProgDecls compoundStm '.'.

identList ::= ident, idLists.

idLists   ::= ',' ident idLists | empty.

    decls     ::= VAR varDecls | empty.

varDecls  ::= identList ':' type ';' varDecls | empty.

type      ::= ARRAY '[' intConst '..' intConst ']' OF ident
        | ident.

subProgDecls ::= subProgDecl  ';' subProgDecls | empty.

subP