org.kiama.rewriting

PositionalRewriter

class PositionalRewriter extends CallbackRewriter

Strategy-based term rewriting for terms with Scala parsing positions.

Specifically, this kind of rewriter will preserve positions of nodes that are instances of scala.util.parsing.input.Positional, when they are (a) rewrittten as part of a generic traversal (e.g., all), or (b) rewritten as part of a rule or similar (e.g., rulefs).

In each case the position of the old node is copied across to the new node into which it is rewritten. In case (b) no attempt is made to assign positions to nodes that represent sub-terms of the term that results from a successful application of the rule. Override the rewriting method to add more specific behaviour.

Source
PositionalRewriter.scala
Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. PositionalRewriter
  2. CallbackRewriter
  3. Rewriter
  4. AnyRef
  5. Any
Visibility
  1. Public
  2. All

Instance Constructors

  1. new PositionalRewriter()

Type Members

  1. class PlusStrategy extends Strategy

    Helper class to contain commonality of choice in non-deterministic choice operator and then-else part of a conditional choice.

  2. abstract class Strategy extends (Term) ⇒ Option[Term]

    Term-rewriting strategies.

  3. type Term = Any

    The type of terms that can be rewritten.

    The type of terms that can be rewritten. Any type of value is acceptable but generic traversals will only work on some specific types. See the documentation of the specific generic traversals (e.g., all or some) for a detailed description.

    Definition Classes
    Rewriter

Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. object Term extends AnyRef

    Generic term deconstruction.

  7. def all(s: ⇒ Strategy): Strategy

    Traversal to all children.

    Traversal to all children. Construct a strategy that applies s to all term children of the subject term. If s succeeds on all of the children, then succeed, forming a new term from the constructor of the original term and the result of s for each child. If s fails on any child, fail. If there are no children, succeed. If s succeeds on all children producing the same terms (by eq for references and by == for other values), then the overall strategy returns the subject term. This operation works on finite Rewritable, Product, Map and Traversable values, checked for in that order. Children of a Rewritable (resp. Product, collection) value are processed in the order returned by the value's deconstruct (resp. productElement, foreach) method.

    Definition Classes
    Rewriter
  8. def allbu(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a bottom-up fashion to all subterms at each level, stopping at a frontier where s succeeds.

    Construct a strategy that applies s in a bottom-up fashion to all subterms at each level, stopping at a frontier where s succeeds.

    Definition Classes
    Rewriter
  9. def alldownup2(s1: ⇒ Strategy, s2: ⇒ Strategy): Strategy

    Construct a strategy that applies s1 in a top-down, prefix fashion stopping at a frontier where s1 succeeds.

    Construct a strategy that applies s1 in a top-down, prefix fashion stopping at a frontier where s1 succeeds. s2 is applied in a bottom-up, postfix fashion to the result.

    Definition Classes
    Rewriter
  10. def alltd(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a top-down fashion, stopping at a frontier where s succeeds.

    Construct a strategy that applies s in a top-down fashion, stopping at a frontier where s succeeds.

    Definition Classes
    Rewriter
  11. def alltdfold(s1: ⇒ Strategy, s2: ⇒ Strategy): Strategy

    Construct a strategy that applies s1 in a top-down, prefix fashion stopping at a frontier where s1 succeeds.

    Construct a strategy that applies s1 in a top-down, prefix fashion stopping at a frontier where s1 succeeds. s2 is applied in a bottom-up, postfix fashion to the results of the recursive calls.

    Definition Classes
    Rewriter
  12. def and(s1: ⇒ Strategy, s2: ⇒ Strategy): Strategy

    and(s1, s2) applies s1 and s2 to the current term and succeeds if both succeed.

    and(s1, s2) applies s1 and s2 to the current term and succeeds if both succeed. s2 will always be applied, i.e., and is not a short-circuit operator

    Definition Classes
    Rewriter
  13. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  14. def attempt(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s, yielding the result of s if it succeeds, otherwise leave the original subject term unchanged.

    Construct a strategy that applies s, yielding the result of s if it succeeds, otherwise leave the original subject term unchanged. In Stratego library this strategy is called try.

    Definition Classes
    Rewriter
  15. def bottomup(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a bottom-up, postfix fashion to the subject term.

    Construct a strategy that applies s in a bottom-up, postfix fashion to the subject term.

    Definition Classes
    Rewriter
  16. def bottomupS(s: ⇒ Strategy, stop: (⇒ Strategy) ⇒ Strategy): Strategy

    Construct a strategy that applies s in a bottom-up, postfix fashion to the subject term but stops when the strategy produced by stop succeeds.

    Construct a strategy that applies s in a bottom-up, postfix fashion to the subject term but stops when the strategy produced by stop succeeds. stop is given the whole strategy itself as its argument.

    Definition Classes
    Rewriter
  17. def breadthfirst(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in breadth first order.

    Construct a strategy that applies s in breadth first order.

    Definition Classes
    Rewriter
  18. def build(t: ⇒ Term): Strategy

    Construct a strategy that always succeeds, changing the subject term to the given term t.

    Construct a strategy that always succeeds, changing the subject term to the given term t.

    Definition Classes
    Rewriter
  19. def child(i: Int, s: Strategy): Strategy

    Traversal to a single child.

    Traversal to a single child. Construct a strategy that applies s to the ith child of the subject term (counting from one). If s succeeds on the ith child producing t, then succeed, forming a new term that is the same as the original term except that the ith child is now t. If s fails on the ith child or the subject term does not have an ith child, then fail. child(i, s) is equivalent to Stratego's i(s) operator. If s succeeds on the ith child producing the same term (by eq for references and by == for other values), then the overall strategy returns the subject term. This operation works for instances of Product or finite Seq values.

    Definition Classes
    Rewriter
  20. def clone(): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  21. def collect[CC[U] <: Traversable[U], T](f: ==>[Term, T])(implicit cbf: CanBuildFrom[CC[T], T, CC[T]]): (Term) ⇒ CC[T]

    Collect query results in a traversable collection.

    Collect query results in a traversable collection. Run the function f as a top-down left-to-right query on the subject term. Accumulate the values produced by the function in the collection and return the final value of the list.

    Definition Classes
    Rewriter
  22. def collectl[T](f: ==>[Term, T]): (Term) ⇒ List[T]

    Collect query results in a list.

    Collect query results in a list. Run the function f as a top-down left-to-right query on the subject term. Accumulate the values produced by the function in a list and return the final value of the list.

    Definition Classes
    Rewriter
  23. def collects[T](f: ==>[Term, T]): (Term) ⇒ Set[T]

    Collect query results in a set.

    Collect query results in a set. Run the function f as a top-down left-to-right query on the subject term. Accumulate the values produced by the function in a set and return the final value of the set.

    Definition Classes
    Rewriter
  24. def congruence(ss: Strategy*): Strategy

    Make a strategy that applies the elements of ss pairwise to the children of the subject term, returning a new term if all of the strategies succeed, otherwise failing.

    Make a strategy that applies the elements of ss pairwise to the children of the subject term, returning a new term if all of the strategies succeed, otherwise failing. The constructor of the new term is the same as that of the original term and the children are the results of the strategies. If the length of ss is not the same as the number of children, then congruence(ss) fails. If the argument strategies succeed on children producing the same terms (by eq for references and by == for other values), then the overall strategy returns the subject term. This operation works on instances of Product values.

    Definition Classes
    Rewriter
  25. val constrcache: WeakHashMap[java.lang.Class[_], java.lang.reflect.Constructor[_]]

    Cache of constructors for product duplication.

    Cache of constructors for product duplication.

    Attributes
    protected
    Definition Classes
    Rewriter
  26. def count(f: ==>[Term, Int]): (Term) ⇒ Int

    Count function results.

    Count function results. Run the function f as a top-down query on the subject term. Sum the integer values returned by f from all applications.

    Definition Classes
    Rewriter
  27. def debug(msg: String, emitter: Emitter = new Emitter): Strategy

    A strategy that always succeeds with the subject term unchanged (i.

    A strategy that always succeeds with the subject term unchanged (i.e., this is the identity strategy) with the side-effect that the subject term is printed to the given emitter, prefixed by the string s. The emitter defaults to one that writes to standard output.

    Definition Classes
    Rewriter
  28. def doloop(s: ⇒ Strategy, c: ⇒ Strategy): Strategy

    Construct a strategy that applies s at least once and then repeats s while c succeeds.

    Construct a strategy that applies s at least once and then repeats s while c succeeds. This operator is called do-while in the Stratego library.

    Definition Classes
    Rewriter
  29. def dontstop(s: ⇒ Strategy): Strategy

    A unit for topdownS, bottomupS and downupS.

    A unit for topdownS, bottomupS and downupS. For example, topdown(s) is equivalent to topdownS(s, dontstop).

    Definition Classes
    Rewriter
  30. def downup(s1: ⇒ Strategy, s2: ⇒ Strategy): Strategy

    Construct a strategy that applies s1 in a top-down, prefix fashion and s2 in a bottom-up, postfix fashion to the subject term.

    Construct a strategy that applies s1 in a top-down, prefix fashion and s2 in a bottom-up, postfix fashion to the subject term.

    Definition Classes
    Rewriter
  31. def downup(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a combined top-down and bottom-up fashion (i.

    Construct a strategy that applies s in a combined top-down and bottom-up fashion (i.e., both prefix and postfix) to the subject term.

    Definition Classes
    Rewriter
  32. def downupS(s1: ⇒ Strategy, s2: ⇒ Strategy, stop: (⇒ Strategy) ⇒ Strategy): Strategy

    Construct a strategy that applies s1 in a top-down, prefix fashion and s2 in a bottom-up, postfix fashion to the subject term but stops when the strategy produced by stop succeeds.

    Construct a strategy that applies s1 in a top-down, prefix fashion and s2 in a bottom-up, postfix fashion to the subject term but stops when the strategy produced by stop succeeds. stop is given the whole strategy itself as its argument.

    Definition Classes
    Rewriter
  33. def downupS(s: ⇒ Strategy, stop: (⇒ Strategy) ⇒ Strategy): Strategy

    Construct a strategy that applies s in a combined top-down and bottom-up fashion (i.

    Construct a strategy that applies s in a combined top-down and bottom-up fashion (i.e., both prefix and postfix) to the subject but stops when the strategy produced by stop succeeds. stop is given the whole strategy itself as its argument.

    Definition Classes
    Rewriter
  34. def dup[T <: Product](t: T, children: Array[AnyRef]): T

    General product duplication function with callback notification.

    General product duplication function with callback notification.

    Attributes
    protected
    Definition Classes
    CallbackRewriterRewriter
  35. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  36. val eq: Strategy

    Construct a strategy that tests whether the two sub-terms of a pair of terms are equal.

    Construct a strategy that tests whether the two sub-terms of a pair of terms are equal.

    Definition Classes
    Rewriter
  37. val equal: Strategy

    Construct a strategy that tests whether the two sub-terms of a pair of terms are equal.

    Construct a strategy that tests whether the two sub-terms of a pair of terms are equal. Synonym for eq.

    Definition Classes
    Rewriter
  38. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  39. def everything[T](v: T)(f: (T, T) ⇒ T)(g: ==>[Term, T])(t: Term): T

    Apply the function at every term in t in a top-down, left-to-right order.

    Apply the function at every term in t in a top-down, left-to-right order. Collect the resulting T values by accumulating them using f with initial left value v. Return the final value of the accumulation.

    Definition Classes
    Rewriter
  40. def everywhere(s: ⇒ Strategy): Strategy

    Same as everywheretd.

    Same as everywheretd.

    Definition Classes
    Rewriter
  41. def everywherebu(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s at all terms in a bottom-up fashion regardless of failure.

    Construct a strategy that applies s at all terms in a bottom-up fashion regardless of failure. Terms for which the strategy fails are left unchanged.

    Definition Classes
    Rewriter
  42. def everywheretd(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s at all terms in a top-down fashion regardless of failure.

    Construct a strategy that applies s at all terms in a top-down fashion regardless of failure. Terms for which the strategy fails are left unchanged.

    Definition Classes
    Rewriter
  43. val fail: Strategy

    A strategy that always fails.

    A strategy that always fails.

    Definition Classes
    Rewriter
  44. def finalize(): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  45. final def getClass(): java.lang.Class[_]

    Definition Classes
    AnyRef → Any
  46. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  47. val id: Strategy

    A strategy that always succeeds with the subject term unchanged (i.

    A strategy that always succeeds with the subject term unchanged (i.e., this is the identity strategy).

    Definition Classes
    Rewriter
  48. def innermost(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s repeatedly to the innermost (i.

    Construct a strategy that applies s repeatedly to the innermost (i.e., lowest and left-most) (sub-)term to which it applies. Stop with the current term if s doesn't apply anywhere.

    Definition Classes
    Rewriter
  49. def innermost2(s: ⇒ Strategy): Strategy

    An alternative version of innermost.

    An alternative version of innermost.

    Definition Classes
    Rewriter
  50. def ior(s1: ⇒ Strategy, s2: ⇒ Strategy): Strategy

    ior(s1, s2) implements inclusive OR, that is, the inclusive choice of s1 and s2.

    ior(s1, s2) implements inclusive OR, that is, the inclusive choice of s1 and s2. It first tries s1. If that fails it applies s2 (just like s1 <+ s2). However, when s1 succeeds it also tries to apply s2.

    Definition Classes
    Rewriter
  51. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  52. val isinnernode: Strategy

    Construct a strategy that succeeds if the current term has at least one direct subterm.

    Construct a strategy that succeeds if the current term has at least one direct subterm.

    Definition Classes
    Rewriter
  53. val isleaf: Strategy

    Construct a strategy that succeeds if the current term has no direct subterms.

    Construct a strategy that succeeds if the current term has no direct subterms.

    Definition Classes
    Rewriter
  54. val ispropersubterm: Strategy

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a sub-term of y but is not equal to y.

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a sub-term of y but is not equal to y.

    Definition Classes
    Rewriter
  55. val ispropersuperterm: Strategy

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a super-term of y but is not equal to y.

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a super-term of y but is not equal to y.

    Definition Classes
    Rewriter
  56. val issubterm: Strategy

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a sub-term of y.

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a sub-term of y.

    Definition Classes
    Rewriter
  57. val issuperterm: Strategy

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a superterm of y.

    Construct a strategy that succeeds when applied to a pair (x,y) if x is a superterm of y.

    Definition Classes
    Rewriter
  58. def lastly(s: ⇒ Strategy, f: ⇒ Strategy): Strategy

    Applies s followed by f whether s failed or not.

    Applies s followed by f whether s failed or not. This operator is called finally in the Stratego library.

    Definition Classes
    Rewriter
  59. def leaves(s: ⇒ Strategy, isleaf: ⇒ Strategy, skip: (Strategy) ⇒ Strategy): Strategy

    Construct a strategy that applies to all of the leaves of the current term, using isleaf as the leaf predicate, skipping subterms for which skip when applied to the result succeeds.

    Construct a strategy that applies to all of the leaves of the current term, using isleaf as the leaf predicate, skipping subterms for which skip when applied to the result succeeds.

    Definition Classes
    Rewriter
  60. def leaves(s: ⇒ Strategy, isleaf: ⇒ Strategy): Strategy

    Construct a strategy that applies to all of the leaves of the current term, using isleaf as the leaf predicate.

    Construct a strategy that applies to all of the leaves of the current term, using isleaf as the leaf predicate.

    Definition Classes
    Rewriter
  61. def log[T](s: ⇒ Strategy, msg: String, emitter: Emitter = new Emitter): Strategy

    Create a logging strategy based on a strategy s.

    Create a logging strategy based on a strategy s. The returned strategy succeeds or fails exactly as s does, but also prints the provided message, the subject term, the success or failure status, and on success, the result term, to the provided emitter (default: standard output).

    Definition Classes
    Rewriter
  62. def logfail[T](s: ⇒ Strategy, msg: String, emitter: Emitter = new Emitter): Strategy

    Create a logging strategy based on a strategy s.

    Create a logging strategy based on a strategy s. The returned strategy succeeds or fails exactly as s does, but if s fails, also prints the provided message and the subject term to the provided emitter (default: standard output).

    Definition Classes
    Rewriter
  63. def loop(c: ⇒ Strategy, s: ⇒ Strategy): Strategy

    Construct a strategy that while c succeeds applies s.

    Construct a strategy that while c succeeds applies s. This operator is called while in the Stratego library.

    Definition Classes
    Rewriter
  64. def loopiter(s: (Int) ⇒ Strategy, low: Int, high: Int): Strategy

    Construct a strategy that applies s(i) for each integer i from low to high (inclusive).

    Construct a strategy that applies s(i) for each integer i from low to high (inclusive). This operator is called for in the Stratego library.

    Definition Classes
    Rewriter
  65. def loopiter(i: ⇒ Strategy, c: ⇒ Strategy, s: ⇒ Strategy): Strategy

    Construct a strategy that repeats application of s while c fails, after initialization with i.

    Construct a strategy that repeats application of s while c fails, after initialization with i. This operator is called for in the Stratego library.

    Definition Classes
    Rewriter
  66. def loopnot(c: ⇒ Strategy, s: ⇒ Strategy): Strategy

    Construct a strategy that while c does not succeed applies s.

    Construct a strategy that while c does not succeed applies s. This operator is called while-not in the Stratego library.

    Definition Classes
    Rewriter
  67. def makechild(c: Any): AnyRef

    Make an arbitrary value c into a term child, checking that it worked properly.

    Make an arbitrary value c into a term child, checking that it worked properly. Object references will be returned unchanged; other values will be boxed.

    Attributes
    protected
    Definition Classes
    Rewriter
  68. def manybu(s: Strategy): Strategy

    Construct a strategy that applies s as many times as possible, but at least once, in bottom up order.

    Construct a strategy that applies s as many times as possible, but at least once, in bottom up order.

    Definition Classes
    Rewriter
  69. def manytd(s: Strategy): Strategy

    Construct a strategy that applies s as many times as possible, but at least once, in top down order.

    Construct a strategy that applies s as many times as possible, but at least once, in top down order.

    Definition Classes
    Rewriter
  70. def map(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s to each element of a list, returning a new list of the results if all of the applications succeed, otherwise fail.

    Construct a strategy that applies s to each element of a list, returning a new list of the results if all of the applications succeed, otherwise fail. If all of the applications succeed without change, return the input list.

    Definition Classes
    Rewriter
  71. def memo(s: ⇒ Strategy): Strategy

    Return a strategy that behaves as s does, but memoises its arguments and results.

    Return a strategy that behaves as s does, but memoises its arguments and results. In other words, if memo(s) is called on a term t twice, the second time will return the same result as the first, without having to invoke s. For best results, it is important that s should have no side effects.

    Definition Classes
    Rewriter
  72. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  73. def not(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s, then fails if s succeeded or, if s failed, succeeds with the subject term unchanged, I.

    Construct a strategy that applies s, then fails if s succeeded or, if s failed, succeeds with the subject term unchanged, I.e., it tests if s applies, but has no effect on the subject term.

    Definition Classes
    Rewriter
  74. final def notify(): Unit

    Definition Classes
    AnyRef
  75. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  76. def oncebu(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a bottom-up fashion to one subterm at each level, stopping as soon as it succeeds once (at any level).

    Construct a strategy that applies s in a bottom-up fashion to one subterm at each level, stopping as soon as it succeeds once (at any level).

    Definition Classes
    Rewriter
  77. def oncetd(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a top-down fashion to one subterm at each level, stopping as soon as it succeeds once (at any level).

    Construct a strategy that applies s in a top-down fashion to one subterm at each level, stopping as soon as it succeeds once (at any level).

    Definition Classes
    Rewriter
  78. def one(s: ⇒ Strategy): Strategy

    Traversal to one child.

    Traversal to one child. Construct a strategy that applies s to the term children of the subject term. Assume that c is the first child on which s succeeds. Then stop applying s to the children and succeed, forming a new term from the constructor of the original term and the original children, except that c is replaced by the result of applying s to c. In the event that the strategy fails on all children, then fail. If there are no children, fail. If s succeeds on the one child producing the same term (by eq for references and by == for other values), then the overall strategy returns the subject term. This operation works on instances of finite Rewritable, Product, Map and Traversable values, checked for in that order. Children of a Rewritable (resp. Product, collection) value are processed in the order returned by the value's deconstruct (resp. productElement, foreach) method.

    Definition Classes
    Rewriter
  79. def option(o: ⇒ Option[Term]): Strategy

    Construct a strategy from an option value o.

    Construct a strategy from an option value o. The strategy succeeds or fails depending on whether o is a Some or None, respectively. If o is a Some, then the subject term is changed to the term that is wrapped by the Some.

    Definition Classes
    Rewriter
  80. def or(s1: ⇒ Strategy, s2: ⇒ Strategy): Strategy

    or(s1, s2) is similar to ior(s1, s2), but the application of the strategies is only tested.

    or(s1, s2) is similar to ior(s1, s2), but the application of the strategies is only tested.

    Definition Classes
    Rewriter
  81. def outermost(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s repeatedly in a top-down fashion stopping each time as soon as it succeeds once (at any level).

    Construct a strategy that applies s repeatedly in a top-down fashion stopping each time as soon as it succeeds once (at any level). The outermost fails when s fails to apply to any (sub-)term.

    Definition Classes
    Rewriter
  82. def para[T](f: (Any, Seq[T]) ⇒ T): (Any) ⇒ T

    Perform a paramorphism over a value.

    Perform a paramorphism over a value. This is a fold in which the recursive step may refer to the recursive component of the value and the results of folding over the children. When the function f is called, the first parameter is the value and the second is a sequence of the values that f has returned for the children. his will work on any value, but will only decompose values that are supported by the Term generic term deconstruction. This operation is similar to that used in the Uniplate library.

    Definition Classes
    Rewriter
  83. def query[T](f: ==>[Term, T]): Strategy

    Define a term query by a partial function f.

    Define a term query by a partial function f. The query always succeeds with no effect on the subject term but applies the given partial function f to the subject term. In other words, the strategy runs f for its side-effects.

    Definition Classes
    Rewriter
  84. def queryf[T](f: (Term) ⇒ T): Strategy

    Define a term query by a function f.

    Define a term query by a function f. The query always succeeds with no effect on the subject term but applies the given (possibly partial) function f to the subject term. In other words, the strategy runs f for its side-effects.

    Definition Classes
    Rewriter
  85. def reduce(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s repeatedly to subterms until it fails on all of them.

    Construct a strategy that applies s repeatedly to subterms until it fails on all of them.

    Definition Classes
    Rewriter
  86. def repeat(s: ⇒ Strategy, n: Int): Strategy

    Construct a strategy that applies s repeatedly exactly n times.

    Construct a strategy that applies s repeatedly exactly n times. If s fails at some point during the n applications, the entire strategy fails. The result of the strategy is that of the nth application of s.

    Definition Classes
    Rewriter
  87. def repeat(s: ⇒ Strategy, c: ⇒ Strategy): Strategy

    Construct a strategy that repeatedly applies s until it fails and then terminates with application of c.

    Construct a strategy that repeatedly applies s until it fails and then terminates with application of c.

    Definition Classes
    Rewriter
  88. def repeat(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s repeatedly until it fails.

    Construct a strategy that applies s repeatedly until it fails.

    Definition Classes
    Rewriter
  89. def repeat1(s: ⇒ Strategy): Strategy

    Construct a strategy that repeatedly applies s (at least once).

    Construct a strategy that repeatedly applies s (at least once).

    Definition Classes
    Rewriter
  90. def repeat1(s: ⇒ Strategy, c: ⇒ Strategy): Strategy

    Construct a strategy that repeatedly applies s (at least once) and terminates with application of c.

    Construct a strategy that repeatedly applies s (at least once) and terminates with application of c.

    Definition Classes
    Rewriter
  91. def repeatuntil(s: ⇒ Strategy, c: ⇒ Strategy): Strategy

    Construct a strategy that repeatedly applies s until c succeeds.

    Construct a strategy that repeatedly applies s until c succeeds.

    Definition Classes
    Rewriter
  92. def restore(s: ⇒ Strategy, rest: ⇒ Strategy): Strategy

    Construct a strategy that applies s, then applies the restoring action rest if s fails (and then fail).

    Construct a strategy that applies s, then applies the restoring action rest if s fails (and then fail). Otherwise, let the result of s stand. Typically useful if s performs side effects that should be restored or undone when s fails.

    Definition Classes
    Rewriter
  93. def restorealways(s: ⇒ Strategy, rest: ⇒ Strategy): Strategy

    Construct a strategy that applies s, then applies the restoring action rest regardless of the success or failure of s.

    Construct a strategy that applies s, then applies the restoring action rest regardless of the success or failure of s. The whole strategy preserves the success or failure of s. Typically useful if s performs side effects that should be restored always, e.g., when maintaining scope information.

    Definition Classes
    Rewriter
  94. def rewrite[T](s: ⇒ Strategy)(t: T): T

    Rewrite a term.

    Rewrite a term. Apply the strategy s to a term returning the result term if s succeeds, otherwise return the original term.

    Definition Classes
    Rewriter
  95. def rewriting[T](oldTerm: T, newTerm: T): T

    If the two terms are instances of scala.util.parsing.input.Positional, set the position of the new term to be that of the old term.

    If the two terms are instances of scala.util.parsing.input.Positional, set the position of the new term to be that of the old term. Always return the new term.

    Definition Classes
    PositionalRewriterCallbackRewriter
  96. def rule(f: ==>[Term, Term]): Strategy

    Define a callback-enabled rewrite rule using a partial term function.

    Define a callback-enabled rewrite rule using a partial term function.

    Definition Classes
    CallbackRewriterRewriter
  97. def rulef(f: (Term) ⇒ Term): Strategy

    Define a rewrite rule using a function f that returns a term.

    Define a rewrite rule using a function f that returns a term. The rule always succeeds with the return value of the function.

    Definition Classes
    Rewriter
  98. def rulefs(f: ==>[Term, Strategy]): Strategy

    Define a callback-enabled rewrite rule using a strategy function.

    Define a callback-enabled rewrite rule using a strategy function.

    Definition Classes
    CallbackRewriterRewriter
  99. def same(v1: Any, v2: Any): Boolean

    Compare two arbitrary values.

    Compare two arbitrary values. If they are both references, use reference equality, otherwise throw an error since we should be able to cast anything to reference.

    Attributes
    protected
    Definition Classes
    Rewriter
  100. def some(s: ⇒ Strategy): Strategy

    Traversal to as many children as possible, but at least one.

    Traversal to as many children as possible, but at least one. Construct a strategy that applies s to the term children of the subject term. If s succeeds on any of the children, then succeed, forming a new term from the constructor of the original term and the result of s for each succeeding child, with other children unchanged. In the event that the strategy fails on all children, then fail. If there are no children, fail. If s succeeds on children producing the same terms (by eq for references and by == for other values), then the overall strategy returns the subject term. This operation works on instances of finite Rewritable, Product, Map and Traversable values, checked for in that order. Children of a Rewritable (resp. Product, collection) value are processed in the order returned by the value's deconstruct (resp. productElement, foreach) method.

    Definition Classes
    Rewriter
  101. def somebu(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a bottom-up fashion to some subterms at each level, stopping as soon as it succeeds once (at any level).

    Construct a strategy that applies s in a bottom-up fashion to some subterms at each level, stopping as soon as it succeeds once (at any level).

    Definition Classes
    Rewriter
  102. def somedownup(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a top-down, prefix fashion stopping at a frontier where s succeeds on some children.

    Construct a strategy that applies s in a top-down, prefix fashion stopping at a frontier where s succeeds on some children. s is then applied in a bottom-up, postfix fashion to the result.

    Definition Classes
    Rewriter
  103. def sometd(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a top-down fashion to some subterms at each level, stopping as soon as it succeeds once (at any level).

    Construct a strategy that applies s in a top-down fashion to some subterms at each level, stopping as soon as it succeeds once (at any level).

    Definition Classes
    Rewriter
  104. def strategy(f: ==>[Term, Option[Term]]): Strategy

    Make a callback-enabled strategy from a partial option function.

    Make a callback-enabled strategy from a partial option function.

    Definition Classes
    CallbackRewriterRewriter
  105. def strategyf(f: (Term) ⇒ Option[Term]): Strategy

    Make a callback-enabled strategy from an option function.

    Make a callback-enabled strategy from an option function.

    Definition Classes
    CallbackRewriterRewriter
  106. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  107. def term(t: Term): Strategy

    Construct a strategy that succeeds only if the subject term matches the given term t.

    Construct a strategy that succeeds only if the subject term matches the given term t.

    Definition Classes
    Rewriter
  108. def test(s: ⇒ Strategy): Strategy

    Construct a strategy that tests whether strategy s succeeds, restoring the original term on success.

    Construct a strategy that tests whether strategy s succeeds, restoring the original term on success. A synonym for where.

    Definition Classes
    Rewriter
  109. def toString(): String

    Definition Classes
    AnyRef → Any
  110. def topdown(s: ⇒ Strategy): Strategy

    Construct a strategy that applies s in a top-down, prefix fashion to the subject term.

    Construct a strategy that applies s in a top-down, prefix fashion to the subject term.

    Definition Classes
    Rewriter
  111. def topdownS(s: ⇒ Strategy, stop: (⇒ Strategy) ⇒ Strategy): Strategy

    Construct a strategy that applies s in a top-down, prefix fashion to the subject term but stops when the strategy produced by stop succeeds.

    Construct a strategy that applies s in a top-down, prefix fashion to the subject term but stops when the strategy produced by stop succeeds. stop is given the whole strategy itself as its argument.

    Definition Classes
    Rewriter
  112. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  113. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  114. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  115. def where(s: ⇒ Strategy): Strategy

    Construct a strategy that tests whether strategy s succeeds, restoring the original term on success.

    Construct a strategy that tests whether strategy s succeeds, restoring the original term on success. This is similar to Stratego's where, except that in this version any effects on bindings are not visible outside s.

    Definition Classes
    Rewriter

Inherited from CallbackRewriter

Inherited from Rewriter

Inherited from AnyRef

Inherited from Any