通过遵循这个问题,我能够为我的解析器的语法添加对交替字符(例如ababa
或)的支持。baba
我现在希望通过允许重复字符来扩展它。
例如,我希望能够支持abaaabab
,aababaaa
以及。在我的特殊情况下,只a
允许重复,但允许重复的解决方案b
也很有用。
鉴于另一个问题的规则:
expr ::= A | B
A ::= "a" B | "a"
B ::= "b" A | "b"
...我尝试将其扩展为支持重复,如下所示:
expr ::= A | B
# support 1 or more "a"
A_one_or_more = A_one_or_more "a" | "a"
A ::= A_one_or_more B | A_one_or_more
B ::= "b" A | "b"
...但是这种语法是模棱两可的。是否有可能明确这一点,如果可以,有人可以帮我消除歧义吗?
我正在使用柠檬解析器,它是一个 LALR(1) 解析器。