我需要解析一个表达式,例如:neg(and(X,Y))
我需要它与抽象堆栈机器代码一起出现,例如上面的示例:
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