【发布时间】:2016-11-22 08:33:22
【问题描述】:
通过跟随this question,我能够为我的解析器语法添加交替字符(例如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"
...但是那个语法是模棱两可的。是否可以明确这一点,如果可以,有人可以帮我消除歧义吗?
我正在使用lemon parser,它是一个 LALR(1) 解析器。
【问题讨论】: