If Then Else
Stratego -- Strategies for Program Transformation
Syntax
"if" Strategy "then" Strategy "else" Strategy "end" -> Strategy
Description
<if s1 then s2 else s3 end> t
If
s1
succeeds then strategy
s2
is applied. If
s1
fails, then
s3
is applied.
The result of condition is ignored. If the condition succeeds, then the result is
<s2> t
If the condition fails, then the result is
<s3> t
Formatting
The if then else construct is usally formatted in the following way:
if s1 then
s2
else
s3
end
Implementation
The if-then-else construct is sugar for a guarded left-choice. The
strategy
if s1 then s2 else s3 end
translates into
where(s1) < s2 + s3