【问题标题】:AntlrWorks 2 outputAntlrWorks 2 输出
【发布时间】:2013-08-07 20:16:51
【问题描述】:

所以我正在使用 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',&lt;20&gt;,1:0] 是什么意思。 @0&lt;20&gt; 与我的语法中的规则编号有什么关系吗?

【问题讨论】:

    标签: antlrworks antlrworks2


    【解决方案1】:

    这是默认标记格式的细分。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多