我想从ANTLR python target页执行该示例,但是我不知道如何定义startRule()
函数以将代码输入特定规则。
有人可以举一个startRule()
-定义的例子吗?
答案 0 :(得分:3)
startRule()函数只是语法中的解析器规则。假设您的语法保存在名为MyGrammar.g4
的文件中,如下所示:
grammar MyGrammar;
// A parser rule that matches zero or more ANY_CHAR tokens
// followed by the EOF (end-of-file)
startRule
: ANY_CHAR* EOF
;
// A lexer rule that matches a single character
ANY_CHAR
: .
;
然后可以在生成的解析器上调用startRule()
。
答案 1 :(得分:1)
ANTLR解析器实际上没有启动规则的概念-调用它时,您可以选择任何规则作为启动规则(通过调用适当的方法,例如start()
来启动)。规则start
)。
如果您需要针对不同的用例从不同的规则开始,这会很有用。
在语法中将起始规则称为startRule
之类的可读性可能仍然是一个好主意,但这不是强制性的。