今日、ANTLR3 の実験を始めました。表現に偏りがあるようです。
クラス名を大文字で始め、その後に大文字と数字が混在するようにします。たとえば、Car
有効、8Car
無効です。
CLASS_NAME : ('A'..'Z')('a'..'z'|'A'..'Z'|'0'..'9')*;
個別にテストすると、これは正常に機能します。ただし、次のルールで使用すると、
model
: '~model' CLASS_NAME model_block
;
ただし、 はCLASS_NAME
数字で始まるクラス名も取得し始めます。この場合、ANTLR はCar
、8Car
または#Car
有効なトークンとしても取得します。私は何かばかげたことを逃しています。任意のポインタをいただければ幸いです。ありがとう。