Compile tuple construction

This commit is contained in:
Ulf Norell 2019-04-02 13:39:01 +02:00
parent 3ec156a4b4
commit 788840f0fa
2 changed files with 9 additions and 0 deletions

View File

@ -176,6 +176,10 @@ expr_to_fcode(_Env, _Type, {bool, _, B}) -> {bool, B};
%% Variables %% Variables
expr_to_fcode(_Env, _Type, {id, _, X}) -> {var, X}; expr_to_fcode(_Env, _Type, {id, _, X}) -> {var, X};
%% Tuples
expr_to_fcode(Env, _Type, {tuple, _, Es}) ->
{tuple, [expr_to_fcode(Env, E) || E <- Es]};
%% Conditionals %% Conditionals
expr_to_fcode(Env, _Type, {'if', _, Cond, Then, Else}) -> expr_to_fcode(Env, _Type, {'if', _, Cond, Then, Else}) ->
{'if', expr_to_fcode(Env, Cond), {'if', expr_to_fcode(Env, Cond),

View File

@ -112,6 +112,11 @@ to_scode(_Env, {integer, N}) ->
to_scode(Env, {var, X}) -> to_scode(Env, {var, X}) ->
[aeb_fate_code:push(lookup_var(Env, X))]; [aeb_fate_code:push(lookup_var(Env, X))];
to_scode(Env, {tuple, As}) ->
N = length(As),
[[ to_scode(Env, A) || A <- As ],
aeb_fate_code:tuple(N)];
to_scode(Env, {binop, Type, Op, A, B}) -> to_scode(Env, {binop, Type, Op, A, B}) ->
[ to_scode(notail(Env), B), [ to_scode(notail(Env), B),
to_scode(push_env(Type, Env), A), to_scode(push_env(Type, Env), A),