From 47db74229deaf281ad02c8305c4e4d4c8dbd3d7d Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Thu, 19 Jul 2018 20:41:31 -0700 Subject: Fixed some bugs in trailing_line_len() and refactored tree_to_nomsu into separate inline/not-inline functions. --- parser.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'parser.lua') diff --git a/parser.lua b/parser.lua index c3478dc..b5fb258 100644 --- a/parser.lua +++ b/parser.lua @@ -234,4 +234,22 @@ end Parser.is_identifier = function(s) return not not (NOMSU_DEFS.ident_char ^ 1 * -1):match(s) end +local inline_escaper = re.compile("{~ (%utf8_char / ('\\' -> '\\\\') / [ -~] / ('\n' -> '\\n') / ('\t' -> '\\t') / ('\b' -> '\\b') / ('\a' -> '\\a') / ('\v' -> '\\v') / ('\f' -> '\\f') / ('\r' -> '\\r') / ('\"' -> '\\\"') / (. -> escape))* ~}", { + utf8_char = NOMSU_DEFS.utf8_char, + escape = (function(self) + return ("\\%03d"):format(self:byte()) + end) +}) +Parser.inline_escape = function(s) + return inline_escaper:match(s) +end +local escaper = re.compile("{~ (%utf8_char / ('\\' -> '\\\\') / [\n\r\t -~] / (. -> escape))* ~}", { + utf8_char = NOMSU_DEFS.utf8_char, + escape = (function(self) + return ("\\%03d"):format(self:byte()) + end) +}) +Parser.escape = function(s) + return escaper:match(s) +end return Parser -- cgit v1.2.3