Stratego -- Strategies for Program Transformation

A Lab : l -> r where swhere

`Lab`

is the label or name of the rule, `l`

is the left-hand side term pattern, `r`

the right-hand side term pattern and `s`

a strategy used as condition.
The application of a rule `Lab`

to a term `t`

consists of matching the left-hand side `l`

to `t`

,
applying the condition `s`

, and then building the right-hand side `r`

. On matching `l`

the variables in `l`

become bound. These variable bindings are used in the condition and the instantiation of the right-hand side.

Rules are implemented by translating them to more basic constructs. That is, a rule

Lab : l -> r where sis translated to a StrategyDefinition

Lab = {x1,...,xn: ?l; where(s); !r}

See also

-- EelcoVisser - 08 Jan 2002

CategoryGlossary