public class SchemeAST extends antlr.CommonAST {

    public SchemeAST() {}

    public SchemeAST(antlr.Token tok) {
        super(tok);
        line = tok.getLine();
    }

    public void initialize(antlr.Token tok) {
	super.initialize(tok);
	line = tok.getLine();
    }
    private int line = -1;
    public int getLine() {
	return line == -1 && getFirstChild() != null ?
	    ((SchemeAST)getFirstChild()).getLine() : line;
    }

    private static String[] tokenNames;
    public static void setTokenNames(String[] names) {
	tokenNames = names;
    }

    public String toString() {

	// NUM_INT, NUM_DOUBLE, STRING_LITERAL

        String name = tokenNames[getType()];
	if (name.equals("IDENT")) {
	    name = "\"" + getText() + "\"";
	} else if (name.equals("NUM_INT") || name.equals("NUM_DOUBLE") || name.equals("STRING_LITERAL")) {
	    name = "(" + name + " " + super.toString() + ")";
	}
	return name + " (line " + getLine() + ") ";
    }

}
