From 371548150618d5b3501f388972077b5d035f7d8a Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 21 Sep 2017 00:10:26 -0700 Subject: Another overhaul, this time pulling all the chunks of the core lib into their own files. --- lib/moonscript.nom | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 lib/moonscript.nom (limited to 'lib/moonscript.nom') diff --git a/lib/moonscript.nom b/lib/moonscript.nom new file mode 100644 index 0000000..1b7bf2d --- /dev/null +++ b/lib/moonscript.nom @@ -0,0 +1,30 @@ +require "lib/metaprogramming.nom" + +# Moonscript! +macro block [moonscript block %moonscript_code] =: + lua block ".." + |local parse, compile = require('moonscript.parse'), require('moonscript.compile') + |local moon_code = compiler:tree_to_value(vars.moonscript_code, vars) + |local tree, err = parse.string(moon_code) + |if not tree then + | compiler:error("Failed to parse moonscript: "..err) + |end + |local lua_code, err, pos = compile.tree(tree) + |if not lua_code then + | compiler:error(compile.format_error(err, pos, moon_code)) + |end + |return "do\\n"..lua_code.."\\nend" + +macro [moonscript %moonscript_code] =: + lua block ".." + |local parse, compile = require('moonscript.parse'), require('moonscript.compile') + |local moon_code = compiler:tree_to_value(vars.moonscript_code, vars) + |local tree, err = parse.string(moon_code) + |if not tree then + | compiler:error("Failed to parse moonscript: "..err) + |end + |local lua_code, err, pos = compile.tree(tree) + |if not lua_code then + | compiler:error(compile.format_error(err, pos, moon_code)) + |end + |return "(function(compiler, vars)\\n"..lua_code.."\\nend)(compiler, vars)" -- cgit v1.2.3