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 명령을 사용하여 자바 코드를 생성 할 때, 나는 자바 인터페이스 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'입니다. 보시다시피 인터페이스에는 이러한 메소드가 없습니다. 문법의 해당 부분을 감지하는 방법이 있습니까?
문법을 제어 할 수 있습니까? –