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 ランタイム環境 (ビルド 1.6.0_22-b04) Java HotSpot(TM) クライアント VM (ビルド 17.1-b03、混合モード、共有)

これは非常に単純なことだと思いますが、私はそれに気づいていないので、明白な答えを出してください。

4

1 に答える 1

11

エラーは、これらのブロックが特定の順序で表示される必要があるためです。

  1. オプション
  2. トークン
  3. @ヘッダ
  4. @メンバー

それからあなたのルール

于 2010-11-01T02:08:26.550 に答える