f(s1, ..., sn) = bodywhere
body
is a strategy expression referring to the strategy arguments si
.
A term can be passed to such a strategy by passing a build, e.g., foo(t)
.
The receiving strategy accesses the term by executing the corresponding strategy.
In certain situations, which arise for example in the compilation of strategies, it is desirable to pass a term 'by value'. Thus, the syntax of Stratego has been extended to allow this. A strategy definition now has the form
f(s1,..., sn | x1, ..., xm) = bodywhere the
xi
are term arguments of f
, which can be referred to directly in
match and build expressions. Such an operator is called using the syntax
f(s1,...,sn|t1,...,tm)
Note that the following sugar is defined:
f(s1,...,sn) = body
is sugar for f(s1,...,sn|) = body
f = body
is sugar for f(|) = body
and similarly for rules. Corresponding sugar holds for strategy calls:
f(s1,...,sn)
is sugar for f(s1,...,sn|)
f
is sugar for f(|)
-- EelcoVisser - 23 Aug 2003