Antlr Lexer では、次のようにトークンを解析するにはどうすればよいですか。
スペース以外の文字を含み、「.{」を含まない単語。私が思い付くことができる最善の方法は、セマンティクス述語を使用することです。
WORD: WL+ {!getText().contains(".{")};
WL: ~[ \n\r\t];
セマンティクスの述語を使用するのは少し心配ですが、ここの WORD は何百万回も字句解析されるため、セマンティクスの述語を配置するとパフォーマンスが低下すると思います。
これは、次のようなものを解析する必要があるという要件から来ています。
TOKEN_ONE.{TOKEN_TWO}
TOKEN_ONE には を含めることができます。および { その文字で。
Antlr4を使用しています。