在ANTLR中使用@header

Mox*_*xen 8 antlr header antlr3

我无法让"@header"或任何其他@规则在ANTLR中工作.使用非常基本的语法,如下所示:

grammar test;

options {
     language = CSharp2;
}

@header {
    using System.Collections.Generic;
}

tokens {
  TEST;
}

something : TEST*;

TEST : '0' .. '9'; 
Run Code Online (Sandbox Code Playgroud)

这似乎遵循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运行时环境(版本1.6.0_22-b04)Java HotSpot(TM)客户端VM(版本17.1-b03,混合模式,共享)

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

Bra*_*ace 9

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

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

然后你的规则