Add loop operator in fcode #889
@ -663,10 +663,12 @@ expr_to_fcode(Env, _Type, {app, _, {'..', _}, [A, B]}) ->
|
|||||||
Init = {tuple, [nil, {var, AV}]},
|
Init = {tuple, [nil, {var, AV}]},
|
||||||
WithA(WithB(
|
WithA(WithB(
|
||||||
{loop, Init, St,
|
{loop, Init, St,
|
||||||
{'let', It, {proj, {var, St}, 2},
|
{'let', It, {proj, {var, St}, 1},
|
||||||
make_if({op, '=<', [{var, It}, {var, BV}]},
|
make_if({op, '=<', [{var, It}, {var, BV}]},
|
||||||
{continue, {tuple, [{op, '::', [{var, It}, {proj, {var, St}, 1}]}]}},
|
{continue, {tuple, [{op, '::', [{var, It}, {proj, {var, St}, 0}]},
|
||||||
{break, {proj, {var, St}, 2}}
|
{op, '+', [{var, It}, {lit, {int, 1}}]}
|
||||||
|
]}},
|
||||||
|
{break, {proj, {var, St}, 0}}
|
||||||
)}}));
|
)}}));
|
||||||
expr_to_fcode(Env, _Type, {list_comp, _, Yield, []}) ->
|
expr_to_fcode(Env, _Type, {list_comp, _, Yield, []}) ->
|
||||||
{op, '::', [expr_to_fcode(Env, Yield), nil]};
|
{op, '::', [expr_to_fcode(Env, Yield), nil]};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user