2

I'm using java CUP to generate a LARL(1) parser for a tiny programming language. Is there a compact form to express optional non-terminals in a rule? For example, in the following rule

statement ::= IDENT WHITE EQ WHITE value WHITE SEMICOLON | 
          IDENT WHITE EQ WHITE value SEMICOLON |
          IDENT WHITE EQ value SEMICOLON |
          IDENT EQ value SEMICOLON |
          block;

I repeat four times essentially the same thing, when it would be natural to put something like

statement ::= IDENT (WHITE) EQ (WHITE) value (WHITE) SEMICOLON |
          block;

0 Answers0