Class 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))))"));
    See Also:
    TreeRewriteRule, TRS, Serialized Form
    • Method Detail

      • 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>
        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.
        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
        mapper - the type mapper
        a new TRS for the mapped type
        NullPointerException - if the mapper is null
      • 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
        mapper - the tree value type mapper
        rules - the rewrite rules
        a new TRS
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the given rules sequence is empty