public static int read_token()

in src/lang/Token.java [72:171]


    public static int read_token(StringBuffer s, PushbackReader in) 
	throws IOException {

	int c, c1;
	int rc;

	c = in.read(); // get 1st. char
	if(c == -1) {
	    s.append("end_of_file");
	    return -1;
	}
	if (Character.isDigit((char)c)) {
	    rc = read_number(c, s, in);
	    if (rc == 1) 
		rc = 'I';
	    else if (rc == 2) 
		rc = 'D';
	    return rc;
	}
	if (Character.isLowerCase((char)c)) {
	    rc = read_word(c, s, in);
	    if (rc > 0)
		rc = 'A';
	    return rc;
	}
	if (Character.isUpperCase((char) c) || c == '_') {
	    rc = read_word(c, s, in);
	    if (rc > 0)
		rc = 'V';
	    return rc;
	}
	switch (c) {
	case '(':
	case ')':
	case '[':
	case ']':
	case '{':
	case '}':
	case ',':
	case '|':
	    s.append((char)c);
	    return c;
	case '.':		/* full stop or symbol */
	    c1 = in.read();
	    if (c1 == -1 || c1 <= ' ') {
		s.append(".");
		return '.';
	    }
	    in.unread(c1);
	    break;
	case '%':		/* one line comment */
	    s.append(" ");
	    while ((c1 = in.read()) != '\n') {
		if (c1 == -1)
		    return ' ';
	    }
	    return ' ';
	case '/':		/* start of comment or symbol */
	    if ((c1 = in.read()) == '*') {
		s.append(" ");
		while (true) {
		    while ((c1 = in.read()) != '*') {
			if(c1 == -1) {
			    s.append("unexpected end_of_file");
			    return -2;
			}
		    }
		    if ((c1 = in.read()) == '/')
			return ' ';
		    in.unread(c1);
		}
	    }
	    in.unread(c1);
	    break;
	case '\'':
	    rc = read_quoted(c, s, in);
	    if (rc > 0)
		rc = 'A';
	    return rc;
	case '"':
	    rc = read_quoted(c, s, in);
	    if (rc > 0)
		rc = 'S';
	    return rc;
	default:
	    break;
	}
	if (isSolo(c)) {
	    s.append((char)c);
	    return 'A';
	}
	if (isSymbol(c)) {
	    rc = read_symbol(c, s, in);
	    if (rc > 0)
		rc = 'A';
	    return rc;
	}
	s.append(" ");
	return ' ';
    }