aboutsummaryrefslogtreecommitdiff
path: root/nomic.moon
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2017-08-23 14:02:36 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2017-08-23 14:02:36 -0700
commit86c0fd47eb4b227446d6ca2286cb4b078176144e (patch)
tree01fbe622803c6dcd0ab00a3623f870ba511d10fa /nomic.moon
parentea69b181982a50771af0e6f2be262a63e06790da (diff)
Removed some debugging, cleaned up.
Diffstat (limited to 'nomic.moon')
-rw-r--r--nomic.moon23
1 files changed, 14 insertions, 9 deletions
diff --git a/nomic.moon b/nomic.moon
index 13f99bd..4a7ecf3 100644
--- a/nomic.moon
+++ b/nomic.moon
@@ -60,7 +60,7 @@ add_indent_tokens = (str)->
indentflagger = [=[
file <- line*
line <- ((string / [^%linebreak])* %linebreak) -> process_line
- string <- '"' (("\\" .) / [^"])* '"'
+ string <- '"' (("\" .) / [^"])* '"'
]=]
indentflagger = re.compile indentflagger, defs
indentflagger\match(str.."\n")
@@ -100,7 +100,7 @@ lingo = [=[
word <- ({ !number {%wordchar+} }) -> Word
expression <- ({ (string / number / variable / list / thunk / subexpression) }) -> Expression
- string <- ({ '"' {(("\\" .) / [^"])*} '"' }) -> String
+ string <- ({ '"' {(("\" .) / [^"])*} '"' }) -> String
number <- ({ {'-'? [0-9]+ ("." [0-9]+)?} }) -> Number
variable <- ({ ("%" {%wordchar+}) }) -> Var
@@ -197,7 +197,7 @@ class Game
replace_grammar = [[
stuff <- {~ (var / string / .)+ ~}
var <- ("%" {%wordchar+}) -> replacer
- string <- '"' (("\\" .) / [^"])* '"'
+ string <- '"' (("\" .) / [^"])* '"'
]]
replacement = add_indent_tokens replacement
fn = (vars, helpers, ftype)=>
@@ -206,11 +206,14 @@ class Game
return ret
replacement_grammar = re.compile(replace_grammar, {:wordchar, :replacer})
replaced = replacement_grammar\match(replacement)
- tree = lingo\match (replaced)
- if not tree
- error "Couldn't match:\n#{replaced}"
- helpers.lua(helpers.transform(tree.value.body))
- return code
+ tree = lingo\match replaced
+ if tree.value.errors and #tree.value.errors.value > 0
+ ret = helpers.transform(tree.value.errors)
+ return ret
+ result = helpers.transform(tree.value.body)
+ helpers.lua(result)
+ return
+
self\defmacro spec, fn
run: (text)=>
@@ -352,7 +355,9 @@ class Game
comma_separated_items("game:call(", args, ")")
when "String"
- lua utils.repr(tree.value, true)
+ escapes = n:"\n", t:"\t", b:"\b", a:"\a", v:"\v", f:"\f", r:"\r"
+ unescaped = tree.value\gsub("\\(.)", ((c)-> escapes[c] or c))
+ lua utils.repr(unescaped, true)
when "Number"
lua tree.value