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