我无法让“@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, 混合模式, 共享)
我认为这很简单,我只是对此视而不见,所以请提出明显的答案。