评估 java 中特定要求的表达式
Evaluate expression for specific requirement in java
我有 Expression 对象,它具有以下内容:
- 运算符
- 参数
- 值
提到的每个简单表达式都可以组合成一个复合表达式。
public SimpleExpresssion createcompound(SimpleExpression simple1,SimpleExpression simple2)
{
CompoundExpression ce = new CompoundExpression();
ce.lhs(simple1);
ce.rhs(simple2);
ce.operator(AND);
}
一个复杂的例子看起来像 ((1AND2)OR(3OR4))
其中 1,2,3,4 是表达式对象。
我正在寻找一种逻辑来根据表达式中的括号首选项来评估表达式。
笔记:
CompoundExpression 是 Expression 的扩展 class,因此最终输出是一个 Expression 对象。
容易解决吗?如果不是,我有什么选择
复杂表达式 ((1AND2)OR(3OR4)) 可以重写为前缀符号:
OR(AND(1,2), OR(3,4))
因此,您唯一需要的是具有 3 个参数的 CompoundExpression 的构造函数或工厂方法:一个运算符、左右抽象表达式:
CompoundExpression(Operator o, Expression left, Expression right) {
this.operator = operator;
this.left = left;
this.right = right;
}
然后,假设您有 4 个简单表达式,构建结果表达式很简单:
Expression result = new CompoundExpression(OR,
new CompoundExpression(AND, simple1, simple2),
new CompoundExpression(OR, simple3, simple4)
);
- 将表达式转换为等效的后缀表达式。
- 使用堆栈计算后缀表达式。
我有 Expression 对象,它具有以下内容:
- 运算符
- 参数
- 值
提到的每个简单表达式都可以组合成一个复合表达式。
public SimpleExpresssion createcompound(SimpleExpression simple1,SimpleExpression simple2)
{
CompoundExpression ce = new CompoundExpression();
ce.lhs(simple1);
ce.rhs(simple2);
ce.operator(AND);
}
一个复杂的例子看起来像 ((1AND2)OR(3OR4)) 其中 1,2,3,4 是表达式对象。 我正在寻找一种逻辑来根据表达式中的括号首选项来评估表达式。 笔记: CompoundExpression 是 Expression 的扩展 class,因此最终输出是一个 Expression 对象。 容易解决吗?如果不是,我有什么选择
复杂表达式 ((1AND2)OR(3OR4)) 可以重写为前缀符号:
OR(AND(1,2), OR(3,4))
因此,您唯一需要的是具有 3 个参数的 CompoundExpression 的构造函数或工厂方法:一个运算符、左右抽象表达式:
CompoundExpression(Operator o, Expression left, Expression right) {
this.operator = operator;
this.left = left;
this.right = right;
}
然后,假设您有 4 个简单表达式,构建结果表达式很简单:
Expression result = new CompoundExpression(OR,
new CompoundExpression(AND, simple1, simple2),
new CompoundExpression(OR, simple3, simple4)
);
- 将表达式转换为等效的后缀表达式。
- 使用堆栈计算后缀表达式。