/** * 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)) })