1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
local m = require'lpeglabel'
function matchPrint(p, s)
local r, lab, errpos = p:match(s)
print("r: ", r, "lab: ", lab, "errpos: ", errpos)
end
function getSub (s, i)
if i then return s:sub(i) else return nil end
end
function matchPrint2(p, s)
local r, lab, ifail = p:match(s)
print("r: ", r, "lab: ", lab, "sfail: ", getSub(s, ifail))
end
local p = m.P"a"^0 * m.P"b" + m.P"c"
matchPrint(p, "abc") --> r: 3 lab: nil errpos: nil
matchPrint(p, "c") --> r: 2 lab: nil errpos: nil
matchPrint(p, "aac") --> r: nil lab: fail errpos: 3
matchPrint(p, "xxc") --> r: nil lab: fail errpos: 1
matchPrint2(p, "abc") --> r: 3 lab: nil sfail: nil
matchPrint2(p, "c") --> r: 2 lab: nil sfail: nil
matchPrint2(p, "aac") --> r: nil lab: fail sfail: c
matchPrint2(p, "xxc") --> r: nil lab: fail sfail: xxc
|