【问题标题】:Using @header in ANTLR在 ANTLR 中使用 @header
【发布时间】:2010-11-01 01:56:47
【问题描述】:

我无法让“@header”或任何其他 @ 规则在 ANTLR 中工作。用一个非常基本的语法,像这样:

grammar test;

options {
     language = CSharp2;
}

@header {
    using System.Collections.Generic;
}

tokens {
  TEST;
}

something : TEST*;

TEST : '0' .. '9'; 

这似乎符合 ANTLR 文档和其他各种在线示例,但是当我尝试通过 ANTLRWorks v1.4 或 ANTLR jar v3.2 生成输出时,我收到以下错误:

无法生成语法,因为:

error(100): [path]\test.g:11:1 语法错误:antlr: [path]\test.g:11:1 意外令牌:令牌 {

我似乎无法动摇。在语法中不包含@header 的情况下,我能够成功生成词法分析器和解析器。我在 Windows 上安装了最新版本的 Java:

java 版本“1.6.0_22” Java(TM) SE 运行时环境 (build 1.6.0_22-b04) Java HotSpot(TM) Client VM(build 17.1-b03,混合模式,共享)

我认为这很简单,我只是对它视而不见,所以请提出显而易见的答案。

【问题讨论】:

    标签: header antlr antlr3


    【解决方案1】:

    错误是因为这些块需要按特定顺序出现。

    1. 选项
    2. 令牌
    3. @header
    4. @members

    那么你的规则

    【讨论】:

    • 相信在下一个版本的 ANTLR (v4) 中,这些块的顺序已经无关紧要了。
    猜你喜欢
    • 2011-11-23
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多