AntlrWorks 2输出

时间:2013-08-07 20:16:51

标签: antlrworks antlrworks2

所以我正在使用Antlrworks 2,处理相当大的语法。问题是,在这个语法中,我试图解决多种含糊之处。

我想知道是否有办法解释在发生故障时调用了哪些规则。

例如,当我运行我的规则时,我得到以下输出

[@0,0:1='99',<20>,1:0]
[@1,2:1='<EOF>',<-1>,1:2]
line 1:0 mismatched input '99' expecting Digit2
(dummy 99)

我想知道[@0,0:1='99',<20>,1:0]是什么意思。 @0<20>与我的语法中的规则编号有什么关系吗?

1 个答案:

答案 0 :(得分:1)

以下是默认令牌格式的细分。

[@{TokenIndex},{StartIndex}:{StopIndex}={Text},<{TokenType}>,{Line}:{Column}]

{TokenType}字段通常对应于特定的词法分析器规则(常量将在生成的词法分析器中声明)。但是,-> type(X)命令可用于任何词法分析器规则,以将该规则生成的令牌重新分配给其他类型。如果将值20分配给名为Foo的令牌,则列表中的第一个令牌由生成名为Foo 的词法分析器规则或包含操作-> type(foo) 的词法分析器规则,您具有用户定义的操作,该操作明确将类型Foo分配给由其他规则生成的令牌(这将是您编写的代码,而不是ANTLR生成的代码。