aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsqmedeiros <sqmedeiros@gmail.com>2022-12-23 15:48:12 -0300
committersqmedeiros <sqmedeiros@gmail.com>2022-12-23 15:48:12 -0300
commitff2dbe372a8759acb1c52bb6296ae7b0866180d5 (patch)
tree8be667d7d426368a24cca993f01b00d9d498d801
parentb5d7638608b4e0b65344c361fd4b8d65a742038f (diff)
downloadlpeglabel-ff2dbe372a8759acb1c52bb6296ae7b0866180d5.tar.gz
lpeglabel-ff2dbe372a8759acb1c52bb6296ae7b0866180d5.tar.bz2
lpeglabel-ff2dbe372a8759acb1c52bb6296ae7b0866180d5.zip
Removing label ExpItem. Label MisClose8 signals a missing closing ']' or an empty char class
-rw-r--r--relabel.lua6
-rw-r--r--testrelabelparser.lua38
2 files changed, 20 insertions, 24 deletions
diff --git a/relabel.lua b/relabel.lua
index f4f4546..5190a98 100644
--- a/relabel.lua
+++ b/relabel.lua
@@ -56,8 +56,6 @@ local errinfo = {
56 56
57 ExpNameOrLab = "expected a name or label after '%' (no space)", 57 ExpNameOrLab = "expected a name or label after '%' (no space)",
58 58
59 ExpItem = "expected at least one item after '[' or '^'",
60
61 MisClose1 = "missing closing ')'", 59 MisClose1 = "missing closing ')'",
62 MisClose2 = "missing closing ':}'", 60 MisClose2 = "missing closing ':}'",
63 MisClose3 = "missing closing '~}'", 61 MisClose3 = "missing closing '~}'",
@@ -67,7 +65,7 @@ local errinfo = {
67 MisClose6 = "missing closing '>'", 65 MisClose6 = "missing closing '>'",
68 MisClose7 = "missing closing '}'", -- for the labels 66 MisClose7 = "missing closing '}'", -- for the labels
69 67
70 MisClose8 = "missing closing ']'", 68 MisClose8 = "missing closing ']' or empty char class",
71 69
72 MisTerm1 = "missing terminating single quote", 70 MisTerm1 = "missing terminating single quote",
73 MisTerm2 = "missing terminating double quote", 71 MisTerm2 = "missing terminating double quote",
@@ -187,7 +185,7 @@ local item = (defined + Range + m.C(any)) / m.P
187local Class = 185local Class =
188 "[" 186 "["
189 * (m.C(m.P"^"^-1)) -- optional complement symbol 187 * (m.C(m.P"^"^-1)) -- optional complement symbol
190 * m.Cf(expect(item, "ExpItem") * (item - "]")^0, mt.__add) 188 * m.Cf(item * (item - "]")^0, mt.__add)
191 / function (c, p) return c == "^" and any - p or p end 189 / function (c, p) return c == "^" and any - p or p end
192 * expect("]", "MisClose8") 190 * expect("]", "MisClose8")
193 191
diff --git a/testrelabelparser.lua b/testrelabelparser.lua
index 0399ff6..27c3e52 100644
--- a/testrelabelparser.lua
+++ b/testrelabelparser.lua
@@ -8,14 +8,14 @@ function testerror(repatt, msg)
8 -- expecting a syntax error 8 -- expecting a syntax error
9 err = err:match("^[^\n]*\n(.-)$") -- remove first line (filename) 9 err = err:match("^[^\n]*\n(.-)$") -- remove first line (filename)
10 err = err:gsub("[ \t]*\n", "\n") -- remove trailing spaces 10 err = err:gsub("[ \t]*\n", "\n") -- remove trailing spaces
11 -- if err ~= msg then 11 --if err ~= msg then
12 -- print(#err, #msg) 12 --print(#err, #msg)
13 -- print('--') 13 --print('--')
14 -- print(err) 14 --print(err)
15 -- print('--') 15 --print('--')
16 -- print(msg) 16 --print(msg)
17 -- print('--') 17 --print('--')
18 -- end 18 --end
19 assert(err == msg) 19 assert(err == msg)
20 else 20 else
21 -- expecting a non-syntax error 21 -- expecting a non-syntax error
@@ -366,16 +366,14 @@ L1:C2: expected a name or label after '%' (no space)
366 ^ 366 ^
367]]) 367]])
368 368
369-- testing ExpItem 369-- testing empty char set (MisClose8, previously MisItem)
370 370
371testerror([[ 371testerror([[
372"p" [ 372"p" [] "q"
373abc
374] "q"
375]], [[ 373]], [[
376L1:C6: expected at least one item after '[' or '^' 374L2:C1: missing closing ']' or empty char class
377"p" [ 375
378 ^ 376^
379]]) 377]])
380 378
381-- testing MisClose1 379-- testing MisClose1
@@ -451,31 +449,31 @@ L1:C9: missing closing '}'
451-- testing MisClose8 449-- testing MisClose8
452 450
453testerror([[[]], [[ 451testerror([[[]], [[
454L1:C2: missing closing ']' 452L1:C2: missing closing ']' or empty char class
455[ 453[
456 ^ 454 ^
457]]) 455]])
458 456
459testerror([[[^]], [[ 457testerror([[[^]], [[
460L1:C3: missing closing ']' 458L1:C3: missing closing ']' or empty char class
461[^ 459[^
462 ^ 460 ^
463]]) 461]])
464 462
465testerror([[[] ]], [[ 463testerror([[[] ]], [[
466L1:C4: missing closing ']' 464L1:C4: missing closing ']' or empty char class
467[] 465[]
468 ^ 466 ^
469]]) 467]])
470 468
471testerror([[[^] ]], [[ 469testerror([[[^] ]], [[
472L1:C6: missing closing ']' 470L1:C6: missing closing ']' or empty char class
473[^] 471[^]
474 ^ 472 ^
475]]) 473]])
476 474
477testerror([[[_-___-_|]], [[ 475testerror([[[_-___-_|]], [[
478L1:C10: missing closing ']' 476L1:C10: missing closing ']' or empty char class
479[_-___-_| 477[_-___-_|
480 ^ 478 ^
481]]) 479]])