/**
* Implosion of AsFix alternatives.
*/
module stratego/asfix/implode/alternative
strategies
ImplodeAlternative =
( appl(prod([cf(?s)<+?s], cf(?alt(a1,a2)), id), ?args)
<+ appl(prod([?s], lex(?alt(a1,a2)), id), ?args)
);
!(alt(a1, a2), 1);
rec x({n, ai, aj:
?(s, n); !alt(n,args)
<+ ?(alt(s, si), n); !alt(n, args)
<+ ?(alt(ai, aj), n); <x>(aj, <add>(n, 1))
})