in java/com/googlecode/prolog_cafe/lang/Token.java [173:236]
public static int read_number(int c, StringBuffer s, PushbackReader in)
throws IOException {
int c1, c2, c3;
in.unread(c);
for (;;) {
c1 = in.read();
if (! Character.isDigit((char)c1))
break;
s.append((char) c1);
}
if (c1 != '.'){
in.unread(c1);
return 1;
}
c2 = in.read();
if (! Character.isDigit((char)c2)){
in.unread(c2);
in.unread(c1);
return 1;
}
s.append((char)c1);
in.unread(c2);
for (;;) {
c1 = in.read();
if (! Character.isDigit((char) c1))
break;
s.append((char) c1);
}
// in.unread(c1);
// return 2;
if (c1 != 'E' && c1 != 'e'){
in.unread(c1);
return 2;
}
c2 = in.read();
if (c2 == '-' || c2 == '+') {
c3 = in.read();
if (! Character.isDigit((char)c3)){
in.unread(c3);
in.unread(c2);
in.unread(c1);
return 2;
}
s.append((char)c1);
s.append((char)c2);
in.unread(c3);
} else if (Character.isDigit((char)c2)){
s.append((char)c1);
in.unread(c2);
} else {
in.unread(c2);
in.unread(c1);
return 2;
}
for (;;) {
c1 = in.read();
if (! Character.isDigit((char) c1))
break;
s.append((char) c1);
}
in.unread(c1);
return 2;
}