diff options
author | Undecidable Robot <undecidabot@gmail.com> | 2016-05-24 12:46:41 +0800 |
---|---|---|
committer | Undecidable Robot <undecidabot@gmail.com> | 2016-05-24 12:46:41 +0800 |
commit | d9a9cbdaadcecee63b7d7a47c5fa856e97d21950 (patch) | |
tree | 503658a4d79bf80e09366cfa77cf7cf4ba482390 | |
parent | 389609e4299c0ca2295d55ac1c8622d14d31935c (diff) | |
download | lpeglabel-d9a9cbdaadcecee63b7d7a47c5fa856e97d21950.tar.gz lpeglabel-d9a9cbdaadcecee63b7d7a47c5fa856e97d21950.tar.bz2 lpeglabel-d9a9cbdaadcecee63b7d7a47c5fa856e97d21950.zip |
Improving error reporting on end of lines
-rw-r--r-- | relabel.lua | 7 | ||||
-rw-r--r-- | testerrors.lua | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/relabel.lua b/relabel.lua index b0a6efc..797e094 100644 --- a/relabel.lua +++ b/relabel.lua | |||
@@ -347,9 +347,14 @@ local pattern = S * m.Cg(m.Cc(false), "G") * expect(exp, "NoPatt") / mm.P | |||
347 | 347 | ||
348 | local function lineno (s, i) | 348 | local function lineno (s, i) |
349 | if i == 1 then return 1, 1 end | 349 | if i == 1 then return 1, 1 end |
350 | local adjust = 0 | ||
351 | if s:sub(i,i) == '\n' then | ||
352 | i = i-1 | ||
353 | adjust = 1 | ||
354 | end | ||
350 | local rest, num = s:sub(1,i):gsub("[^\n]*\n", "") | 355 | local rest, num = s:sub(1,i):gsub("[^\n]*\n", "") |
351 | local r = #rest | 356 | local r = #rest |
352 | return 1 + num, r ~= 0 and r or 1 | 357 | return 1 + num, (r ~= 0 and r or 1) + adjust |
353 | end | 358 | end |
354 | 359 | ||
355 | local function compile (p, defs) | 360 | local function compile (p, defs) |
diff --git a/testerrors.lua b/testerrors.lua index fbf5cc9..6e9c83e 100644 --- a/testerrors.lua +++ b/testerrors.lua | |||
@@ -148,6 +148,7 @@ local patterns = { | |||
148 | ]], | 148 | ]], |
149 | [[ | 149 | [[ |
150 | A <- 'A' /{'lab'} B / ! | 150 | A <- 'A' /{'lab'} B / ! |
151 | |||
151 | B <- %{1, 2 3} 'b' / '6' & / 'B' | 152 | B <- %{1, 2 3} 'b' / '6' & / 'B' |
152 | ]] | 153 | ]] |
153 | } | 154 | } |