4

ANTLRでUNICODE文法を使用しようとしていますが、これにより常にエラー(文法のスニペット)が発生します。

grammar Expression;

options {
  charVocabulary='\u000'..'\uFFFE';
}

parse
  :  exp EOF
;

exp
  : 'a'
 ;

常に次のようになります'\uFFFE' not expected ';'。正しいUNICODE文法を書く方法-正しいcharVocabulary定義は何ですか?

ANTLR 3.2を使用していますが、新しいバージョンでも同じエラーが発生します。

4

1 に答える 1

3

charVocabularyは ANTLR v2 オプションであり、ANTLR v3 文法では使用できません。ANTLR v3 文法から生成されたすべてのレクサーは、範囲内の文字を受け入れます( ANTLRInputStream\u0000..\uFFFFを作成するときは、必ず適切なエンコーディングを使用してください!)。

ANTLRWorks を使用する場合、Any任意の文字に一致するルール を定義することでこれを確認できます。

Any : . ; 

ANTLRWorks の下部に次の図が表示されます。

ここに画像の説明を入力

于 2012-06-10T13:24:50.130 に答える