The
dead-var-elim
component of the
Stratego optimizer eliminates variables from a strategy expression if they are not used in a build.
For example, in the expression
{ x, y, z :
?F(x, y)
; !y
; ?G(z)
; !H(z, z)
}
the variable
z
is used in the final build (not dead), and
y
is used in the build needed for the match with
G
(not dead).
However,
x
is dead since it does not contribute to the final result.
Dead variable elimination removes dead variables by
- eliminating them from the scope, and
- replacing occurrences in matches with a wildcard
Thus, the example reduces to
{ y, z :
?F(_, y)
; !y
; ?G(z)
; !H(z, z)
}
Variable only matches (
?x
) with dead variables are turned into wildcard matches (
?_
) and can
be cleaned up by a subsequent simplification.
--
EelcoVisser - 17 Aug 2003