package jp.ac.aiit.jointry.services.lang.ast; import java.util.Iterator; import java.util.ArrayList; import jp.ac.aiit.jointry.services.lang.parser.Environment; import jp.ac.aiit.jointry.services.lang.parser.Token; import jp.ac.aiit.jointry.util.JoinTryException; public class ASTLeaf extends ASTree { private static ArrayList<ASTree> empty = new ArrayList<ASTree>(); protected Token token; public ASTLeaf(Token t) { token = t; } public ASTree child(int i) { throw new IndexOutOfBoundsException(); } public int numChildren() { return 0; } public Iterator<ASTree> children() { return empty.iterator(); } public String toString() { return token.getText(); } public String location() { return "at line " + token.getLineNumber(); } public Token token() { return token; } public Object eval(Environment env) { throw new JoinTryException("cannot eval: " + toString(), this); } }