Working cleanup.
This commit is contained in:
parent
19c42887bc
commit
c5c014864e
14
game2.moon
14
game2.moon
@ -35,20 +35,6 @@ g\def "return %x", (vars)=>
|
|||||||
g\run_debug[[
|
g\run_debug[[
|
||||||
say "hello world!"
|
say "hello world!"
|
||||||
|
|
||||||
say (lua "23 + 42")
|
|
||||||
|
|
||||||
macro "print %y": say %y
|
|
||||||
|
|
||||||
macro "%x + %y":
|
|
||||||
lua (join ["(",%x," + ",%y,")"])
|
|
||||||
lua "(#{%x} + #{%y})"
|
|
||||||
|
|
||||||
(five) + 4
|
|
||||||
|
|
||||||
print "done"
|
|
||||||
]]
|
|
||||||
[[
|
|
||||||
|
|
||||||
rule "fart": say "poot"
|
rule "fart": say "poot"
|
||||||
rule "doublefart":
|
rule "doublefart":
|
||||||
say "poot"
|
say "poot"
|
||||||
|
@ -185,7 +185,7 @@ class Game
|
|||||||
indentified = add_indent_tokens(text)
|
indentified = add_indent_tokens(text)
|
||||||
print("Indentified:\n[[#{indentified}]]")
|
print("Indentified:\n[[#{indentified}]]")
|
||||||
print("\nCompiling...")
|
print("\nCompiling...")
|
||||||
code = compile(text, @macros)
|
code = self\compile(text)
|
||||||
if @debug
|
if @debug
|
||||||
print(code)
|
print(code)
|
||||||
lua_thunk, err = loadstring(code)
|
lua_thunk, err = loadstring(code)
|
||||||
@ -237,7 +237,7 @@ class Game
|
|||||||
return transform(tree.value.errors)
|
return transform(tree.value.errors)
|
||||||
|
|
||||||
lua "return (function(game, vars)"
|
lua "return (function(game, vars)"
|
||||||
indented->
|
indented ->
|
||||||
lua transform(tree.value.body)
|
lua transform(tree.value.body)
|
||||||
lua "end)"
|
lua "end)"
|
||||||
|
|
||||||
@ -253,15 +253,14 @@ class Game
|
|||||||
if not tree.value
|
if not tree.value
|
||||||
error("Thunk without value: #{utils.repr(tree)}")
|
error("Thunk without value: #{utils.repr(tree)}")
|
||||||
lua "(function(game,vars)"
|
lua "(function(game,vars)"
|
||||||
indented->
|
indented ->
|
||||||
lua "local ret"
|
lua "local ret"
|
||||||
lua transform(tree.value)
|
lua transform(tree.value)
|
||||||
lua "return ret"
|
lua "return ret"
|
||||||
lua "end)"
|
lua "end)"
|
||||||
return table.concat ret,"\n"
|
|
||||||
|
|
||||||
when "Statement"
|
when "Statement"
|
||||||
return ind"ret = #{transform(tree.value,indent_level)}"
|
lua "ret = #{ded(transform(tree.value))}"
|
||||||
|
|
||||||
when "FunctionCall"
|
when "FunctionCall"
|
||||||
name_bits = {}
|
name_bits = {}
|
||||||
@ -272,39 +271,41 @@ class Game
|
|||||||
|
|
||||||
if @macros[name]
|
if @macros[name]
|
||||||
-- TODO: figure out args
|
-- TODO: figure out args
|
||||||
return @macros[name][1](args, transform,indent_level,@macros)
|
return @macros[name][1](self, args, transform)
|
||||||
|
|
||||||
if #args == 0
|
if #args == 0
|
||||||
return ind"game:call(#{utils.repr(name, true)})"
|
lua "game:call(#{utils.repr(name, true)})"
|
||||||
ret = {
|
else
|
||||||
ind"game:call(#{utils.repr(name, true)},"
|
lua "game:call(#{utils.repr(name, true)},"
|
||||||
}
|
indented ->
|
||||||
for i,a in ipairs(args)
|
for i,a in ipairs(args)
|
||||||
if a.type != "Word"
|
if a.type != "Word"
|
||||||
line = transform(a,indent_level+1)
|
line = transform(a)
|
||||||
if i != #args then line ..=","
|
if i != #args then line ..=","
|
||||||
table.insert ret, line
|
lua line
|
||||||
table.insert ret, ind")"
|
lua ")"
|
||||||
return table.concat ret, "\n"
|
|
||||||
|
|
||||||
when "String"
|
when "String"
|
||||||
return ind"\"#{tree.value}\""
|
lua utils.repr(tree.value, true)
|
||||||
|
|
||||||
when "Number"
|
when "Number"
|
||||||
return ind(tree.value)
|
lua tree.value
|
||||||
|
|
||||||
when "List"
|
when "List"
|
||||||
if #tree.value == 0
|
if #tree.value == 0
|
||||||
return "{}"
|
lua "{}"
|
||||||
elseif #tree.value == 1
|
elseif #tree.value == 1
|
||||||
return ind"{#{transform(tree.value,0)}}"
|
lua "{#{transform(tree.value)}}"
|
||||||
else
|
else
|
||||||
bits = [transform(i, indent_level+1) for i in *tree.value]
|
lua "{"
|
||||||
-- I like the trailing comma
|
indented ->
|
||||||
return ind"{\n"..table.concat(bits, ",\n")..",\n"..ind"}"
|
for i in *tree.value
|
||||||
|
-- I like the trailing comma
|
||||||
|
lua transform(i)..","
|
||||||
|
lua "}"
|
||||||
|
|
||||||
when "Var"
|
when "Var"
|
||||||
return ind"vars[#{utils.repr(tree.value,true)}]"
|
lua "vars[#{utils.repr(tree.value,true)}]"
|
||||||
|
|
||||||
else
|
else
|
||||||
error("Unknown/unimplemented thingy: #{utils.repr(tree)}")
|
error("Unknown/unimplemented thingy: #{utils.repr(tree)}")
|
||||||
|
Loading…
Reference in New Issue
Block a user