2

次のような式を解析する必要があります。neg(and(X,Y))

上記の例のように、Abstract Stack Machine Code を出力する必要があります。

LOAD X;
LOAD Y;
EXEC and;
EXEC neg;

しかし、今のところマシンコードは問題ではありません。式の入力文字列をすべてのサブ式に解析/分割するにはどうすればよいですか?

最初のブラケットを見つけて、それから最後のブラケットに連結しようとしましたが、内部式がある場合は問題が発生しますか?

私が試したコード:(まだ開発段階にあるのではないでください)

private boolean evaluateExpression(String expression) {

    int brackets = 0;
    int beginIndex = -1;
    int endIndex = -1;

    for (int i = 0; i < expression.length(); i++) {
        if (expression.charAt(i) == '(') {
            brackets++;

            if (brackets == 0) {
                endIndex = i;
                System.out.println("the first expression ends at " + i);
            }
        }
        if (expression.charAt(i) == ')') {
            brackets--;

            if (brackets == 0) {
                endIndex = i;
                System.out.println("the first expression ends at " + i);
            }
        }
    }
    // Check for 1st bracket
    for (int i = 0; i < expression.length(); i++) {
        if (expression.charAt(i) == '(') {
            beginIndex = i;
            break;
        }
    }

    String subExpression = expression.substring(beginIndex, endIndex);
    System.out.println("Sub expression: " + subExpression);

    evaluateExpression(subExpression);

    return false;

}

私は基本的な解決策を探しているだけです, それはする必要があります: and, or, neg

4

3 に答える 3