If Then

Stratego -- Strategies for Program Transformation

Syntax

"if" Strategy "then" Strategy "end" -> Strategy

Description

The strategy

if s1 then s2 end

applies s2 if s1 succeeds. The result of s1 is ignored. That is, if the condition

<s1> t

succeeds, then the result of

<if s1 then s2 end> t

is

<s2> t

On the other hand, if the condition fails, then the result is t.

Formatting

The if-then construct is usually formatted in the following way:

if s1 then
  s2
end

Implementation

The if-then construct is sugar for a guarded left-choice. The strategy

if s1 then s2 end

translates into

where(s1) < s2 + id