initial file ; file = declaration+ # File ; declaration = NONTERMINAL EQUALS prod (BAR prod)* SEMICOLON # Production | INITIAL NONTERMINAL SEMICOLON # Initial ; prod = regexps HASH TERMINAL (COMMA (SHIFT|REDUCE) TERMINAL)* # ProductionRhs ; regexps = (regexp (regexp | STAR | PLUS | OPTIONAL)*)? # Concatenation ; regexp = (TERMINAL | NONTERMINAL | SHIFT | REDUCE | INITIAL) # Terminal | LPAREN regexps (BAR regexps)* RPAREN # Union ;