// // Generated by JTB 1.3.2 // package spiglet.syntaxtree; import java.util.Enumeration; import java.util.Vector; /** * Represents a single token in the grammar. If the "-tk" option * is used, also contains a Vector of preceding special tokens. */ public class NodeToken implements Node { public NodeToken(String s) { this(s, -1, -1, -1, -1, -1); } public NodeToken(String s, int kind, int beginLine, int beginColumn, int endLine, int endColumn) { tokenImage = s; specialTokens = null; this.kind = kind; this.beginLine = beginLine; this.beginColumn = beginColumn; this.endLine = endLine; this.endColumn = endColumn; } public NodeToken getSpecialAt(int i) { if ( specialTokens == null ) throw new java.util.NoSuchElementException("No specials in token"); return specialTokens.elementAt(i); } public int numSpecials() { if ( specialTokens == null ) return 0; return specialTokens.size(); } public void addSpecial(NodeToken s) { if ( specialTokens == null ) specialTokens = new Vector(); specialTokens.addElement(s); } public void trimSpecials() { if ( specialTokens == null ) return; specialTokens.trimToSize(); } public String toString() { return tokenImage; } public String withSpecials() { if ( specialTokens == null ) return tokenImage; StringBuffer buf = new StringBuffer(); for ( Enumeration e = specialTokens.elements(); e.hasMoreElements(); ) buf.append(e.nextElement().toString()); buf.append(tokenImage); return buf.toString(); } public void accept(spiglet.visitor.Visitor v) { v.visit(this); } public R accept(spiglet.visitor.GJVisitor v, A argu) { return v.visit(this,argu); } public R accept(spiglet.visitor.GJNoArguVisitor v) { return v.visit(this); } public void accept(spiglet.visitor.GJVoidVisitor v, A argu) { v.visit(this,argu); } public String tokenImage; // Stores a list of NodeTokens public Vector specialTokens; // -1 for these ints means no position info is available. public int beginLine, beginColumn, endLine, endColumn; // Equal to the JavaCC token "kind" integer. // -1 if not available. public int kind; }