我正在使用 java CUP 为一种小型编程语言生成一个 LARL(1) 解析器。是否有一种紧凑的形式来表达规则中的可选非终结符?例如,在以下规则中
statement ::= IDENT WHITE EQ WHITE value WHITE SEMICOLON |
IDENT WHITE EQ WHITE value SEMICOLON |
IDENT WHITE EQ value SEMICOLON |
IDENT EQ value SEMICOLON |
block;
我重复四次基本上相同的东西,当它很自然地放上类似的东西时
statement ::= IDENT (WHITE) EQ (WHITE) value (WHITE) SEMICOLON |
block;