10 |
10 |
11 local char_escape = lpeg.R"az" + lpeg.S"\\\r\n" + delim; |
11 local char_escape = lpeg.R"az" + lpeg.S"\\\r\n" + delim; |
12 local numeric_escape = (lpeg.R"09"^1)^-3; |
12 local numeric_escape = (lpeg.R"09"^1)^-3; |
13 local escape = (lpeg.P"\\" * (char_escape + numeric_escape)); |
13 local escape = (lpeg.P"\\" * (char_escape + numeric_escape)); |
14 |
14 |
15 local value = (escape + (1-delim))^0; |
15 local quoted_value = lpeg.P"\"" * ((1-lpeg.P"\"")^0) * lpeg.P"\""; |
|
16 local value = quoted_value + (escape + (1-delim))^0; |
16 |
17 |
17 local escape_map = setmetatable({ |
18 local escape_map = setmetatable({ |
18 t = "\t", b = "\b", f = "\f"; |
19 t = "\t", b = "\b", f = "\f"; |
19 n = "\n", r = "\r", v = "\v"; }, |
20 n = "\n", r = "\r", v = "\v"; }, |
20 { __index = function (_, n) |
21 { __index = function (_, n) |