如何在ANTLR中定义起始规则?

时间:2019-03-01 12:28:32

标签: python antlr

我想从ANTLR python target页执行该示例,但是我不知道如何定义startRule()函数以将代码输入特定规则。 有人可以举一个startRule()-定义的例子吗?

2 个答案:

答案 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之类的可读性可能仍然是一个好主意,但这不是强制性的。