0
我還想寫自然的語法規則:有沒有一種方法可以用PLY語法表示一個或多個語法?
program = { expression }
其中{}
爲1以上。
例如,Lua的語法使用相同的語法:
chunk ::= {stat [`;´]} [laststat [`;´]]
這可能嗎?這符合上下文無關語法嗎?
我還想寫自然的語法規則:有沒有一種方法可以用PLY語法表示一個或多個語法?
program = { expression }
其中{}
爲1以上。
例如,Lua的語法使用相同的語法:
chunk ::= {stat [`;´]} [laststat [`;´]]
這可能嗎?這符合上下文無關語法嗎?
我認爲最好的簡單的解決方案是:
program : expression
| program NEWLINE expression
這僅適用於自PLY產生LR文法,非終結不能與自身開始(左(如果您使用ANTLR等工具)
您也可以這樣做:
program : expression
| expression NEWLINE program
這第二個版本很好,因爲它與LL和LR語法都兼容,但我相信第一個規則對LR語法分析器來說更有效率。
我找到了答案:
program : expression
| expression NEWLINE expression
謝謝,這很有幫助! – sdasdadas