数週間の休憩の後、再び ANTLR と戦う時が来ました...
とにかく、次のレクサー トークンを定義しています。
fragment EQ: '=';
fragment NE: '<>';
BOOLEAN_FIELD
: ('ISTRAINED'|'ISCITIZEN')
;
BOOLEAN_CONSTANT
: ('TRUE'|'FALSE'|'Y'|'N')
;
BOOLEAN_LOGICAL
: BOOLEAN_FIELD (EQ|NE) (BOOLEAN_FIELD|BOOLEAN_CONSTANT)
;
残念ながら、BOOLEAN_LOGICAL トークンは、「ISTRAINED = ISTRAINED」などの単純な条件で NoViableAltException をスローしています。
「これはパーサーにあるはずです」という応答がいくつかあることは知っています。以前はパーサーにありましたが、「はい/いいえ、このテキストブロックは有効ですか?」という質問だけが必要なため、いくつかの単純な項目をレクサーにオフロードしようとしています。
どんな助けでも大歓迎です。