假设我们在解析令牌时有一条规则,指定:
x -> [y[,y]*]
括号'[]'表示其中的任何内容是可选的,以便规则发生,*表示0或更多。例如,它可能是:
x : (empty)
OR
x : y
OR
x : y,y
以及(以上是'x'规则将被激活的输入示例,而不是代码应该如何)
我已经尝试了以下功能
x : y commaY
|
;
commaY : COMMA y commaY
|
;
我想知道上面的其他选项,如果有的话,它可以用于教育目的。
先感谢您。
编辑我之前的回答是不正确的(正如评论中指出的那样),但我无法删除已接受的答案,所以我决定编辑它。
你需要(至少)2条x -> [y[,y]*]
规则。这是另一种可能性:
x
: list
| /* eps */
;
list
: list ',' y
| y
;