package antlr; /* ANTLR Translator Generator * Project led by Terence Parr at http://www.cs.usfca.edu * Software rights: http://www.antlr.org/license.html */ import antlr.*; import antlr.collections.AST; public abstract class ParseTree extends BaseAST { /** Walk parse tree and return requested number of derivation steps. * If steps <= 0, return node text. If steps == 1, return derivation * string at step. */ public String getLeftmostDerivationStep(int step) { if ( step<=0 ) { return toString(); } StringBuffer buf = new StringBuffer(2000); getLeftmostDerivation(buf, step); return buf.toString(); } public String getLeftmostDerivation(int maxSteps) { StringBuffer buf = new StringBuffer(2000); buf.append(" "+this.toString()); buf.append("\n"); for (int d=1; d"); buf.append(getLeftmostDerivationStep(d)); buf.append("\n"); } return buf.toString(); } /** Get derivation and return how many you did (less than requested for * subtree roots. */ protected abstract int getLeftmostDerivation(StringBuffer buf, int step); // just satisfy BaseAST interface; unused as we manually create nodes public void initialize(int i, String s) { } public void initialize(AST ast) { } public void initialize(Token token) { } }