aboutsummaryrefslogtreecommitdiff
path: root/nomsu_compiler.moon
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-07-30 14:26:08 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-07-30 14:26:28 -0700
commitdc0c940d65f9922407a101277ccab9e5bfa70c67 (patch)
treec3270950e5855918566f9686e38831e6793e91e2 /nomsu_compiler.moon
parent54906c0553147f29807c945eace6724d06ff570c (diff)
Added bit library and support for checking Lua version and whether
LuaJIT is being used.
Diffstat (limited to 'nomsu_compiler.moon')
-rw-r--r--nomsu_compiler.moon12
1 files changed, 10 insertions, 2 deletions
diff --git a/nomsu_compiler.moon b/nomsu_compiler.moon
index abb48f7..a8eba0c 100644
--- a/nomsu_compiler.moon
+++ b/nomsu_compiler.moon
@@ -109,11 +109,13 @@ with NomsuCompiler
:next, :unpack, :setmetatable, :coroutine, :rawequal, :getmetatable, :pcall,
:error, :package, :os, :require, :tonumber, :tostring, :string, :xpcall, :module,
:print, :loadfile, :rawset, :_VERSION, :collectgarbage, :rawget, :rawlen,
- :table, :assert, :dofile, :loadstring, :type, :select, :debug, :math, :io, :load,
+ :table, :assert, :dofile, :loadstring, :type, :select, :math, :io, :load,
:pairs, :ipairs,
-- Nomsu types:
:list, :dict,
}
+ if jit then to_add.bit = require('bit')
+ elseif _VERSION == "Lua 5.2" then to_add.bit = bit32
for k,v in pairs(to_add) do NomsuCompiler[k] = v
for k,v in pairs(AST) do NomsuCompiler[k] = v
.LuaCode = LuaCode
@@ -230,6 +232,12 @@ with NomsuCompiler
["test %"]: (tree, _body)=>
test_str = table.concat [tostring(@tree_to_nomsu(line)) for line in *_body], "\n"
LuaCode tree.source, "TESTS[#{repr(tostring(tree.source))}] = ", repr(test_str)
+
+ ["is jit"]: (tree, _code)=>
+ return LuaCode.Value(tree.source, jit and "true" or "false")
+
+ ["Lua version"]: (tree, _code)=>
+ return LuaCode.Value(tree.source, repr(_VERSION))
}, {
__index: (stub)=>
if math_expression\match(stub)
@@ -743,7 +751,7 @@ with NomsuCompiler
elseif bit.type != "List" and bit.type != "Dict"
interp_nomsu\parenthesize!
nomsu\append interp_nomsu
- if interp_nomsu\is_multiline!
+ if interp_nomsu\is_multiline! and i < #tree
nomsu\append "\n.."
nomsu = NomsuCode(tree.source)
add_text(nomsu, tree)