diff options
| author | Bruce Hill <bitbucket@bruce-hill.com> | 2018-01-03 17:23:46 -0800 |
|---|---|---|
| committer | Bruce Hill <bitbucket@bruce-hill.com> | 2018-01-03 17:23:46 -0800 |
| commit | b2ddc1d7687591b4cbc686d274cf3b1f67c3ce1e (patch) | |
| tree | 7e74997e30b29c639d6bc8b3f420dcd94e57e17e /nomsu.moon | |
| parent | cd4196d36553530eac385dd909426509fa9aaeec (diff) | |
Added support for \000 and \x00 style byte literals.
Diffstat (limited to 'nomsu.moon')
| -rwxr-xr-x | nomsu.moon | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -41,7 +41,10 @@ lpeg.setmaxstack 10000 -- whoa {:P,:R,:V,:S,:Cg,:C,:Cp,:B,:Cmt} = lpeg STRING_ESCAPES = n:"\n", t:"\t", b:"\b", a:"\a", v:"\v", f:"\f", r:"\r" -ESCAPE_CHAR = (P("\\")*S("ntbavfr")) / (s)->STRING_ESCAPES[s\sub(2,2)] +DIGIT, HEX = R('09'), R('09','af','AF') +ESCAPE_CHAR = (P("\\")*S("xX")*C(HEX*HEX)) / => string.char(tonumber(@, 16)) +ESCAPE_CHAR += (P("\\")*C(DIGIT*(DIGIT^-2))) / => string.char(tonumber @) +ESCAPE_CHAR += (P("\\")*C(S("ntbavfr"))) / STRING_ESCAPES OPERATOR_CHAR = S("'~`!@$^&*-+=|<>?/") UTF8_CHAR = ( R("\194\223")*R("\128\191") + @@ -698,7 +701,7 @@ end)]])\format(concat(lua_bits, "\n")) return concat(bits, "\n") @unescape_string: (str)=> - str\gsub("\\(.)", ((c)-> STRING_ESCAPES[c] or c)) + Cs(((P("\\\\")/"\\") + (P("\\\"")/'"') + ESCAPE_CHAR + P(1))^0)\match(str) @comma_separated_items: (open, items, close)=> bits = {open} |
