我有 3 个表情树。
给定表达式树,找到与 axiom_from 匹配的子树并将其替换为 axiom_to。这本身很简单,但 axiom_from 可能包含与任何内容匹配的符号节点,并且它的任何子节点都应移动到 axiom_to 中相应的符号节点。 (见图)
这里是表达式的定义:
#[derive(Debug, Clone, PartialEq)]
pub enum Expr {
Number(f64),
UnaryMinus(Box<Expr>),
BinOp {
lhs: Box<Expr>,
op: Op,
rhs: Box<Expr>,
},
Symbol(i32), // Symbols can match anything. Fields(id)
}
#[derive(Debug, Clone, PartialEq)]
pub enum Op {
Add,
Subtract,
Multiply,
Divide,
Modulo,
Power,
}
甚至算法的名称也能对我有很大帮助。谢谢您的帮助!