package uva.TaxForm.Trash; import java.util.Arrays; import java.util.Iterator; import java.util.List; import org.antlr.v4.runtime.Parser; import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.tree.ErrorNode; import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.TerminalNode; import org.antlr.v4.runtime.tree.Trees; public class TreeTaxFormListener implements ParseTreeListener { private final List<String> ruleNames; private Parser parser; public TreeTaxFormListener(Parser parser) { this.parser = parser; //this.ruleNames = Arrays.asList(parser.getRuleNames()); this.ruleNames = Arrays.asList( "taxForm", "statement", "atom", "question", "varName", "varType" ); System.out.println( "depth -> childCount -> ruleIndex -> ruleContext -> startType -> Text" ); } @Override public void enterEveryRule(ParserRuleContext ctx) { /*System.out.println( ctx.depth() + "\t" + ctx.getChildCount() + "\t" + ctx.getRuleIndex() + "\t" + ctx.getRuleContext() + "\t" + ctx.getStart().getType() + " -> " + ctx.getText() );*/ for(String name: ruleNames) { if( parser.getRuleIndex(name) == ctx.getRuleIndex() ) { System.out.println( ctx.depth() + "\t" + ctx.getChildCount() + "\t" + ctx.getRuleIndex() + "\t" + ctx.getRuleContext() + "\t" + ctx.getStart().getType() + " -> " + ctx.getText() ); } } //System.out.println( ctx.toStringTree() ); } @Override public void exitEveryRule(ParserRuleContext ctx) { // TODO Auto-generated method stub } @Override public void visitErrorNode(ErrorNode node) { // TODO Auto-generated method stub System.out.println( "visitErrorNode: " + node.getText() ); } @Override public void visitTerminal(TerminalNode node) { // TODO Auto-generated method stub //System.out.println( "visitTerminal: " + Trees.toStringTree(node) ); System.out.println( "visitTerminal: " + node.getText() ); } }