現在、antlr4を使用してパーサーを構築していますが、私はベストを尽くしたが問題は見つからなかった。私はそれを解明して解決するのを助けてくれますか?私は識別子の前にテキストを配置した場合、私はTEXTの前に識別子を置く場合antlr4 2つのレクサールールが同じ文字列に一致します
# grammer file : PluginDoc.g4:
grammer PluginDoc
pluginDef : pluginName | pluginDesc;
pluginName : PluginName IDENTIFIER;
pluginDesc : PluginDesc TEXT;
PluginName '@pluginName'
PluginDesc '@pluginDesc'
IDENTIFIER : [a-zA-Z_]+;
TEXT : ~(' ' | '\n' | '\t')+;
input content is:
@pluginName kafka
@pluginDesc abc
、私は「TEXTを期待不一致入力 『ABC』」を取得します は、私が「不一致入力 『カフカ』期待IDENTIFIER」
を取得しますIDENTIFIERとTEXTの両方が一致しているように見えますが、pluginNameのIDENTIFIERとどのように一致させることができますか?pluginDescのTEXTと一致するだけですか?
をファイルのヘッダが文法、ない文法を指定する必要があります。
両方に 'TEXT'を使用して、後処理フェーズで識別子名を検証してください。 –