Package com.singularsys.extensions.rewrite
Allow expression rewriting to be created and applied. Rules must implement
RewriteRuleI
providing methods
boolean test(ASTFunNode node,Node children[])
and Node apply(ASTFunNode node,Node children[])
.
The set of rewriting rules can be applied using the
RewriteVisitor
.
For example
Jep jep = new Jep(); jep.setComponent(new DeepCopyVisitor()); jep.setComponent(new TreeUtils()); jep.setComponent(new SimplificationVisitor()); RewriteVisitor ev = new RewriteVisitor(); jep.setComponent(ev); RewriteRuleI expand = new ExpandBrackets(); ev.add(expand); // Add the rule jep.reinitializeComponents(); // reinitialize Jep Node node = jep.parse("(a+b)*(c+d)"); Node expanded = ev.rewrite(node,false); // perform the rewriting jep.println(expanded);
- Since:
- Jep 3.5 / Extensions 2.0
- See Also:
- Rewrite documentation
-
Interface Summary Interface Description RewriteRuleI Defines a rule for symbolic rewriting of an expressionRewriteVisitor.ConstantRuleI RewriteVisitor.VariableRuleI Define a rule which may modify a variable node. -
Class Summary Class Description AbstractRewrite Basic implementation for a RewriteRule.CollectPowers Collect powers together so thatx*x -> x^2
andx^n*x -> x^(n+1)
.ExpandBrackets A rule which expands brackets (a+b)*(c+d) -> a*c+a*d+b*c+b*dExpandPower Expands powers (a+b)^2 -> a^2+2*a*b+b^2RewriteVisitor A visitor which allows rewrite rules to be added and applied.SmallNumberRule A rule where numbers very close to zero are replaces by zero.VariableShifter Replaces a variable "x" by "x + d" where d is a double value.