1

Antlr Lexer では、次のようにトークンを解析するにはどうすればよいですか。

スペース以外の文字を含み、「.{」を含まない単語。私が思い付くことができる最善の方法は、セマンティクス述語を使用することです。

WORD: WL+   {!getText().contains(".{")};
WL: ~[ \n\r\t];

セマンティクスの述語を使用するのは少し心配ですが、ここの WORD は何百万回も字句解析されるため、セマンティクスの述語を配置するとパフォーマンスが低下すると思います。

これは、次のようなものを解析する必要があるという要件から来ています。

TOKEN_ONE.{TOKEN_TWO}

TOKEN_ONE には を含めることができます。および { その文字で。

Antlr4を使用しています。

4

2 に答える 2

-2

質問を「単語には、空白、ドット、または左中かっこ以外の文字が含まれています」と言い換えてみてはどうでしょうか。

次に、レクサー規則は次のとおりです。

 WORD:  ~[ \n\r\t.{]*
于 2013-10-07T21:08:51.503 に答える