elua: change xgettext lexer to never include delimiters and also expand \n escape sequence in short strings to actual newline (no other escapes get this treatment)

This commit is contained in:
Daniel Kolesa 2014-05-30 14:18:28 +01:00
parent 297f9a821a
commit 0e5f9bc151
1 changed files with 7 additions and 4 deletions

View File

@ -117,22 +117,25 @@ end
local read_string = function(ls)
local delim = ls.current
local buf = { delim }
local buf = {}
local c = next_char(ls)
while c ~= delim do
if not c then lex_error(ls, "unfinished string", "<eof>")
elseif c == "\n" or c == "\r" then
lex_error(ls, "unfinished string", tconc(buf))
elseif c == "\\" then
buf[#buf + 1] = c
buf[#buf + 1] = next_char(ls)
c = next_char(ls)
if c == "n" then
buf[#buf + 1] = "\n"
else
buf[#buf + 1] = "\\" .. c
end
c = next_char(ls)
else
buf[#buf + 1] = c
c = next_char(ls)
end
end
buf[#buf + 1] = c
next_char(ls)
return tconc(buf)
end