diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2017-09-26 15:27:01 -0700 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2017-09-26 15:27:01 -0700 |
| commit | 10d61df78bdbf002a3701e468b0a3c88be2cad03 (patch) | |
| tree | 3199e67f26a5b42e5aa5ccdd03a5924486f31b79 /nomsu.moon | |
| parent | 02def0af9226d7b0b86195093a87ef251934c797 (diff) | |
Making forward progress.
Diffstat (limited to 'nomsu.moon')
| -rwxr-xr-x | nomsu.moon | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -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 |
