9

我无法让“@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 生成输出时,出现以下错误:

无法生成语法,因为:

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

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

java 版本“1.6.0_22” Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM (build 17.1-b03, 混合模式, 共享)

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

4

1 回答 1

11

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

  1. 选项
  2. 代币
  3. @标头
  4. @成员

那么你的规则

于 2010-11-01T02:08:26.550 回答