我能夠通過跟隨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"
...但是,語法是不明確的。有沒有可能使這個明確無誤,如果有的話,任何人都可以幫助我消除歧義?
我使用的是一個LALR(1)解析器的lemon parser。
感謝您的詳細回覆。這絕對是有道理的,但不幸的是,我在這方面的能力缺乏,所以我在解決我的模糊問題上遇到了困難時期。我會繼續攻擊我的特殊問題,希望我能夠解決它。再次感謝你! – JesseBuesking
@JesseBuesking:如果你問一個更精確的問題,你可能會得到更好的答案。從你的評論到另一個答案,我認爲你的語法看起來並不像你所問的那樣。但是,我支持我的聲明,您最好的選擇是畫出一些語法圖來闡明您的想法。 – rici