java.lang.Object
io.jenetics.ext.rewriting.TreeRewriteRule<V>
- All Implemented Interfaces:
TreeRewriter<V>,Serializable
Represents a tree rewrite rule. A rewrite rule consists of a match pattern,
which must be matched, and a substitution pattern, which is expanded and
replaces the variables in the pattern. Some simple arithmetic
rewrite rules.
add($x,0) -> $x
mul($x,1) -> $x
The substitution pattern may only use variables, already defined in
the match pattern. So, the creation of the following rewrite rule s
would lead to an IllegalArgumentException:
add($x,0) -> $y
mul(0,1) -> mul($x,1)
- Since:
- 5.0
- Version:
- 5.0
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionTreeRewriteRule(TreePattern<V> left, TreePattern<V> right) Create a new rewrite rule from the given matching (left) and replacement (right) pattern. -
Method Summary
Modifier and TypeMethodDescriptionbooleaninthashCode()left()Return the rule matching pattern.<B> TreeRewriteRule<B> Mapsthisrewrite rule from typeVto typeB.static TreeRewriteRule<String> Compiles the string representation of a rewrite rule:static <V> TreeRewriteRule<V> Compiles the string representation of a rewrite rule:intApplies the rewriting to the given (mutable)tree.right()Return the replacement pattern of the rule.toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface io.jenetics.ext.rewriting.TreeRewriter
rewrite
-
Constructor Details
-
TreeRewriteRule
Create a new rewrite rule from the given matching (left) and replacement (right) pattern.- Parameters:
left- the matching pattern of the ruleright- the substitution pattern- Throws:
NullPointerException- if one of the arguments isnullIllegalArgumentException- if the template pattern uses variables not defined in the matcher pattern
-
-
Method Details
-
left
Return the rule matching pattern.- Returns:
- the rule matching pattern
-
right
Return the replacement pattern of the rule.- Returns:
- the replacement pattern of the rule
-
map
Mapsthisrewrite rule from typeVto typeB.- Type Parameters:
B- the target type- Parameters:
mapper- the type mapper- Returns:
- a new rewrite rule for the mapped type
- Throws:
NullPointerException- if themapperisnull
-
rewrite
Description copied from interface:TreeRewriterApplies the rewriting to the given (mutable)tree. The tree rewrite is done in place. Via thelimitparameter, the termination of the tree-rewrite process can be guaranteed.- Specified by:
rewritein interfaceTreeRewriter<V>- Parameters:
tree- the tree to be rewrittenlimit- the maximal number this rewrite rule is applied to the given tree. This guarantees the termination of the rewrite method.- Returns:
- the number of rewrites applied to the input
tree
-
hashCode
-
equals
-
toString
-
parse
public static <V> TreeRewriteRule<V> parse(String rule, Function<? super String, ? extends V> mapper) Compiles the string representation of a rewrite rule:add($x,0) -> $x mul($x,1) -> $x- Type Parameters:
V- the tree node type- Parameters:
rule- the rewrite rulemapper- the mapper function which converts the node value into the actual typeV- Returns:
- a new rewrite rule, compiled from the given rule string
- Throws:
IllegalArgumentException- if the rewrite rule is invalidNullPointerException- if on of the arguments isnull
-
parse
Compiles the string representation of a rewrite rule:add($x,0) -> $x mul($x,1) -> $x- Parameters:
rule- the rewrite rule- Returns:
- a new rewrite rule, compiled from the given rule string
- Throws:
IllegalArgumentException- if the rewrite rule is invalidNullPointerException- if on of the arguments isnull
-