str.append(reader.getLastChar());
str.append((char)reader.getLastChar());
  private ATerm parseNumber(ATermReader reader)  {    StringBuffer str = new StringBuffer();    ATerm result;    do {      str.append(reader.getLastChar());    } while(Character.isDigit((char)reader.read()));    if(reader.getLastChar() != '.' &&        reader.getLastChar() != 'e' && reader.getLastChar() != 'E') {      int val;      try {	val = Integer.parseInt(str.toString());      } catch (NumberFormatException e) {	throw new ParseError("malformed int");      }      result = makeInt(val);    } else {      if(reader.getLastChar() == '.') {	str.append('.');	reader.read();	if(!Character.isDigit((char)reader.getLastChar()))	  throw new ParseError("digit expected");	do {	  str.append(reader.getLastChar());	} while(Character.isDigit((char)reader.read()));      }      if(reader.getLastChar() == 'e' || reader.getLastChar() == 'E') {	str.append(reader.getLastChar());	reader.read();	if(reader.getLastChar() == '-' || reader.getLastChar() == '+') {	  str.append(reader.getLastChar());	  reader.read();	}	if(!Character.isDigit((char)reader.getLastChar()))	  throw new ParseError("digit expected!");	do {	  str.append(reader.getLastChar());	} while(Character.isDigit((char)reader.read()));      }      double val;      try {	val = Double.valueOf(str.toString()).doubleValue();      } catch (NumberFormatException e) {	throw new ParseError("malformed real");      }      result = makeReal(val);        }    return result;  }