public abstract class LispObject{ static final int FIXNUM=0; static final int SYMBOL=1; static final int CONS=2; static final int STRING=3; static final int FLONUM=4; abstract int getType(); public int getInteger() throws LispException{ throw LispException.typeerr; } public String getName() throws LispException{ throw LispException.typeerr; } public LispObject car() throws LispException{ throw LispException.typeerr; } public LispObject cdr() throws LispException{ throw LispException.typeerr; } public LispObject setCar() throws LispException{ throw LispException.typeerr; } public LispObject setCdr() throws LispException{ throw LispException.typeerr; } public double getDouble() throws LispException{ throw LispException.typeerr; } public String getString() throws LispException{ throw LispException.typeerr; } public int length() throws LispException{ LispObject l=this; int i=0; while(l.getType()==CONS){ i++; l=l.cdr(); } return i; } }