aboutsummaryrefslogtreecommitdiff
path: root/testlabel.lua
diff options
context:
space:
mode:
Diffstat (limited to 'testlabel.lua')
-rw-r--r--testlabel.lua23
1 files changed, 20 insertions, 3 deletions
diff --git a/testlabel.lua b/testlabel.lua
index 6ae184f..2243826 100644
--- a/testlabel.lua
+++ b/testlabel.lua
@@ -566,12 +566,29 @@ checkeqlab({nil, 3, "a"}, p:match("a"))
566checkeqlab({nil, 3, "b"}, p:match("b")) 566checkeqlab({nil, 3, "b"}, p:match("b"))
567 567
568p = m.Rec(m.T(3), "b", 3) 568p = m.Rec(m.T(3), "b", 3)
569p:pcode()
570checkeqlab({nil, 0, "a"}, p:match("a")) 569checkeqlab({nil, 0, "a"}, p:match("a"))
571assert(p:match("b") == 2) 570assert(p:match("b") == 2)
572 571
572--[[
573S -> (A //{fail} (!c .)*) C
574A -> a*b
575C -> c+
576]]
577g = m.P{
578 "S",
579 S = m.Rec(m.V"A", (-m.P"c" * m.P(1))^0) * m.V"C",
580 A = m.P"a"^0 * "b",
581 C = m.P"c"^1,
582}
573 583
574print("OK") 584assert(g:match("abc") == 4)
575 585assert(g:match("aabc") == 5)
586assert(g:match("aadc") == 5)
587assert(g:match("bc") == 3)
588checkeqlab({nil, 0, "bc"}, g:match("bbc"))
589assert(g:match("xxc") == 4)
590assert(g:match("c") == 2)
591checkeqlab({nil, 0, ""}, g:match("fail"))
576 592
593print("OK")
577 594