From 6882862d0ff226d73bc6a010d335896c44d8cde9 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 22 Sep 2017 11:44:07 -0700 Subject: Cleaned up code generation to have less cruft. --- lib/control_flow.nom | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'lib/control_flow.nom') diff --git a/lib/control_flow.nom b/lib/control_flow.nom index fdde318..4bdaa06 100644 --- a/lib/control_flow.nom +++ b/lib/control_flow.nom @@ -16,7 +16,7 @@ macro statement [if %condition %if_body else %else_body] =: |end # Return -macro block [return] =: "return nil" +macro statement [return] =: "do return end" macro block [return %return-value] =: ".." |return \%return-value as lua\ @@ -117,9 +117,8 @@ macro block [when %body] =: %result join=: ".." | |do - | local ret | \(lua expr "vars.thunk.value") as lua\ - | return ret + | goto finished_when |end ..else: if (lua expr "#vars.condition_bits == 1 and vars.condition_bits[1].type ~= 'Word'"): @@ -132,11 +131,10 @@ macro block [when %body] =: %result join=: ".." | |if \%condition as lua\ then - | local ret | \(lua expr "vars.thunk.value") as lua\ - | return ret + | goto finished_when |end - + %result join=: "\n::finished_when::" %result # Switch statement @@ -160,9 +158,8 @@ macro block [when %branch-value %body] =: %result join=: ".." | |do - | local ret | \(lua expr "vars.thunk.value") as lua\ - | return ret + | goto finished_when |end ..else: if (lua expr "#vars.condition_bits == 1 and vars.condition_bits[1].type ~= 'Word'"): @@ -175,9 +172,9 @@ macro block [when %branch-value %body] =: %result join=: ".." | |if compiler.utils.equivalent(branch_condition, \%condition as lua\) then - | local ret | \(lua expr "vars.thunk.value") as lua\ - | return ret + | goto finished_when |end + %result join=: "\n::finished_when::" %result -- cgit v1.2.3