次のような式を解析する必要があります。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