diff options
Diffstat (limited to 'examples/farthest.lua')
-rw-r--r-- | examples/farthest.lua | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/examples/farthest.lua b/examples/farthest.lua index 692390f..9cbe03d 100644 --- a/examples/farthest.lua +++ b/examples/farthest.lua | |||
@@ -1,14 +1,27 @@ | |||
1 | local m = require'lpeglabel' | 1 | local m = require'lpeglabel' |
2 | 2 | ||
3 | function matchPrint(p, s) | 3 | function matchPrint(p, s) |
4 | local r, lab, sfail = p:match(s) | 4 | local r, lab, errpos = p:match(s) |
5 | print("r: ", r, "lab: ", lab, "sfail: ", sfail) | 5 | print("r: ", r, "lab: ", lab, "errpos: ", errpos) |
6 | end | ||
7 | |||
8 | function getSub (s, i) | ||
9 | if i then return s:sub(i) else return nil end | ||
10 | end | ||
11 | |||
12 | function matchPrint2(p, s) | ||
13 | local r, lab, ifail = p:match(s) | ||
14 | print("r: ", r, "lab: ", lab, "sfail: ", getSub(s, ifail)) | ||
6 | end | 15 | end |
7 | 16 | ||
8 | local p = m.P"a"^0 * m.P"b" + m.P"c" | 17 | local p = m.P"a"^0 * m.P"b" + m.P"c" |
9 | matchPrint(p, "abc") --> r: 3 lab: nil sfail: nil | 18 | matchPrint(p, "abc") --> r: 3 lab: nil errpos: nil |
10 | matchPrint(p, "c") --> r: 2 lab: nil sfail: nil | 19 | matchPrint(p, "c") --> r: 2 lab: nil errpos: nil |
11 | matchPrint(p, "aac") --> r: nil lab: 0 sfail: c | 20 | matchPrint(p, "aac") --> r: nil lab: 0 errpos: 3 |
12 | matchPrint(p, "xxc") --> r: nil lab: 0 sfail: xxc | 21 | matchPrint(p, "xxc") --> r: nil lab: 0 errpos: 1 |
13 | 22 | ||
14 | 23 | ||
24 | matchPrint2(p, "abc") --> r: 3 lab: nil sfail: nil | ||
25 | matchPrint2(p, "c") --> r: 2 lab: nil sfail: nil | ||
26 | matchPrint2(p, "aac") --> r: nil lab: 0 sfail: c | ||
27 | matchPrint2(p, "xxc") --> r: nil lab: 0 sfail: xxc | ||