Informatika gyűjtemény

Egy szinttel feljebb token.java

2004050607080910

NézetNyomtat

token.java (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
Vector<Token> tokens = new Vector<Token>(50);

char ch;
for( int i=0; i<expr.length(); i++ )
{
    ch = expr.charAt(i);
    if( ch >= '0' && ch <= '9' ) {
        // itt egy szám következik, olvassuk addig amíg tart.
        StringBuffer sb = new StringBuffer();
        while( (ch >= '0' && ch <='9') || (ch == '.') )
        {
            sb.append(ch);
            i++;
            if( i == expr.length() ) {
            // ha az utolsó karakter, akkor ne próbálkozzunk :)
                break;
            }
            ch = expr.charAt(i);
        }
        i--; // túl olvastunk, menjünk vissza.
        tokens.add(new Number(sb.toString()));
    } else if( ch == '(' ) {
        tokens.add(new Parenthesis(true));
    } else if( ch == ')' ) {
        tokens.add(new Parenthesis(false));
    } else if( ch == '+' || ch == '-') {
        // megvizsgáljuk, hogy unary-e vagy binary operator.
        // unary, ha: előtte nyitó zárojel van, vagy operátor
        Token token = null;
        try {
            token = tokens.lastElement();
        } catch( NoSuchElementException ex ) {}
        if( token == null || token instanceof Operator ||
            (token instanceof Parenthesis && ((Parenthesis)token).isLeft())) {
            tokens.add(new UnaryOperator(ch));
        } else {
            tokens.add(new BinaryOperator(ch));
        }
    } else if( ch == '*' || ch == '/' || ch == '^' ) {
        tokens.add(new BinaryOperator(ch));
    }

    // Ha nincs függvény, akkor a következő két ágat ki lehet hagyni :)

    else if( ch == ',' ) {
        tokens.add(new FunctionSeparator());
    } else {
        // függvény vizsgálat.
        int j = expr.indexOf('(', i);
        String func = expr.substring(i, j);
        if( Function.isFunction(func) ) {
            tokens.add(new Function(func));
        }
        // odaugrunk a nyitó zárójelhez.
        i = j-1;
    }
}
(Vissza)