Class TRS<V>

java.lang.Object
io.jenetics.ext.rewriting.TRS<V>
All Implemented Interfaces:
TreeRewriter<V>, Serializable

public final class TRS<V> extends Object implements TreeRewriter<V>, Serializable
This class represents a Tree Rewrite System, which consists of a set of Tree Rewrite Rules.
final TRS<String> trs = TRS.parse(
    "add(0,$x) -> $x",
    "add(S($x),$y) -> S(add($x,$y))",
    "mul(0,$x) -> 0",
    "mul(S($x),$y) -> add(mul($x,$y),$y)"
);

// Converting the input tree into its normal form.
final TreeNode<String> tree = TreeNode.parse("add(S(0),S(mul(S(0),S(S(0)))))");
trs.rewrite(tree);
assert tree.equals(TreeNode.parse("S(S(S(S(0))))"));
Since:
5.0
Version:
5.0
See Also:
  • Constructor Details

  • Method Details

    • rewrite

      public int rewrite(TreeNode<V> tree, int limit)
      Description copied from interface: TreeRewriter
      Applies the rewriting to the given (mutable) tree. The tree rewrite is done in place. Via the limit parameter, the termination of the tree-rewrite process can be guaranteed.
      Specified by:
      rewrite in interface TreeRewriter<V>
      Parameters:
      tree - the tree to be rewritten
      limit - 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
    • map

      public <B> TRS<B> map(Function<? super V,? extends B> mapper)
      Maps this TRS from type V to type B.
      Type Parameters:
      B - the target type
      Parameters:
      mapper - the type mapper
      Returns:
      a new TRS for the mapped type
      Throws:
      NullPointerException - if the mapper is null
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • parse

      public static <V> TRS<V> parse(Function<? super String,? extends V> mapper, String... rules)
      Create a new TRS from the given rewrite rules and type mapper.
      Type Parameters:
      V - the tree value type the rewriter is working on
      Parameters:
      mapper - the tree value type mapper
      rules - the rewrite rules
      Returns:
      a new TRS
      Throws:
      NullPointerException - if one of the arguments is null
      IllegalArgumentException - if the given rules sequence is empty
    • parse

      public static TRS<String> parse(String... rules)
      Create a new TRS from the given rewrite rules.
      Parameters:
      rules - the rewrite rules
      Returns:
      a new TRS
      Throws:
      NullPointerException - if one of the arguments is null
      IllegalArgumentException - if the given rules sequence is empty