0
でルールをトリガするトークンを検出:私はこの非常に単純な文法を持ってANTLR4
public class DLRBaseListener implements DLRListener {
@Override public void enterDlr(DLRParser.DlrContext ctx) { }
@Override public void exitDlr(DLRParser.DlrContext ctx) { }
@Override public void enterC(DLRParser.CContext ctx) { }
@Override public void exitC(DLRParser.CContext ctx) { }
@Override public void enterEveryRule(ParserRuleContext ctx) { }
@Override public void exitEveryRule(ParserRuleContext ctx) { }
@Override public void visitTerminal(TerminalNode node) { }
@Override public void visitErrorNode(ErrorNode node) { }
}
:私はantlr4コマンドを使用して、Javaコードを生成すると、私はJavaのインタフェースDLRBaseListenerを得たgrammar DLR;
dlr : c 'sub' c ;
c : CN | 'not' c | c 'and' c | c 'or' c ;
CN : [A-Z]+ ;
WS : [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
特に、ルールがトリガーされたときに検出する場合は、このインターフェイスを拡張することができます。したがって、enterDlr、exitDlr、enterC、exitCなどのメソッドは非常に便利です。 私の目標はより具体的です。そのルールをトリガーするトークンを検出したいと思います。私の例では、 'c、c'、 'c、c'または 'c'ではありません。 ご覧のとおり、これらのメソッドはインターフェイスにありません。 文法のそれらの部分を検出する方法はありますか?
文法を制御できますか? –