From 10d61df78bdbf002a3701e468b0a3c88be2cad03 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 26 Sep 2017 15:27:01 -0700 Subject: Making forward progress. --- nomsu.moon | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'nomsu.moon') diff --git a/nomsu.moon b/nomsu.moon index 497bda1..9ba3856 100755 --- a/nomsu.moon +++ b/nomsu.moon @@ -70,7 +70,7 @@ nomsu = [=[ inline_block <- ({ {| "(" inline_statements ")" |} }) -> Block eol_block <- ({ {| ":" %ws? noeol_statements eol |} }) -> Block indented_block <- ({ {| (":" / "(..)") indent - statements + statements (nodent statements)* (dedent / (({.+} ("" -> "Error while parsing block")) => error)) |} }) -> Block @@ -329,6 +329,8 @@ class NomsuCompiler end)]])\format(concat lua_bits, "\n") when "Block" + if #tree.value == 0 + return "nil",nil if #tree.value == 1 expr,statement = @tree_to_lua tree.value[1] if not statement @@ -367,6 +369,8 @@ class NomsuCompiler if string_buffer ~= "" insert concat_parts, repr(string_buffer) + if #concat_parts == 0 + return "''", nil return "(#{concat(concat_parts, "..")})", nil when "List" @@ -502,13 +506,13 @@ class NomsuCompiler initialize_core: => -- Sets up some core functionality lua_code = (vars)=> - inner_vars = setmetatable({}, {__index:(_,key)-> "vars[#{repr(key)}]"}) + inner_vars = vars-- setmetatable({}, {__index:(_,key)-> "vars[#{repr(key)}]"}) lua = @tree_to_value(vars.code, inner_vars) return nil, lua @defmacro "lua code %code", lua_code lua_value = (vars)=> - inner_vars = setmetatable({}, {__index:(_,key)-> "vars[#{repr(key)}]"}) + inner_vars = vars--setmetatable({}, {__index:(_,key)-> "vars[#{repr(key)}]"}) lua = @tree_to_value(vars.code, inner_vars) return lua, nil @defmacro "lua value %code", lua_value -- cgit v1.2.3