aboutsummaryrefslogtreecommitdiff
path: root/examples/typedlua/tllexer.lua
diff options
context:
space:
mode:
Diffstat (limited to 'examples/typedlua/tllexer.lua')
-rw-r--r--examples/typedlua/tllexer.lua11
1 files changed, 5 insertions, 6 deletions
diff --git a/examples/typedlua/tllexer.lua b/examples/typedlua/tllexer.lua
index 6517ba5..d6033ec 100644
--- a/examples/typedlua/tllexer.lua
+++ b/examples/typedlua/tllexer.lua
@@ -1,6 +1,6 @@
1local tllexer = {} 1local tllexer = {}
2 2
3local lpeg = require "lpeglabel" 3local lpeg = require "lpeglabelrec"
4lpeg.locale(lpeg) 4lpeg.locale(lpeg)
5 5
6local tlerror = require "tlerror" 6local tlerror = require "tlerror"
@@ -9,10 +9,6 @@ function tllexer.try (pat, label)
9 return pat + lpeg.T(tlerror.labels[label]) 9 return pat + lpeg.T(tlerror.labels[label])
10end 10end
11 11
12function tllexer.catch (pat, label)
13 return lpeg.Lc(pat, lpeg.P(false), tlerror.labels[label])
14end
15
16local function setffp (s, i, t, n) 12local function setffp (s, i, t, n)
17 if not t.ffp or i > t.ffp then 13 if not t.ffp or i > t.ffp then
18 t.ffp = i 14 t.ffp = i
@@ -45,7 +41,10 @@ local CloseEQ = lpeg.Cmt(Close * lpeg.Cb("init"),
45local LongString = Open * (lpeg.P(1) - CloseEQ)^0 * tllexer.try(Close, "LongString") / 41local LongString = Open * (lpeg.P(1) - CloseEQ)^0 * tllexer.try(Close, "LongString") /
46 function (s, o) return s end 42 function (s, o) return s end
47 43
48local Comment = lpeg.Lc(lpeg.P("--") * LongString / function () return end, 44local LongStringCm1 = Open * (lpeg.P(1) - CloseEQ)^0 * Close /
45 function (s, o) return s end
46
47local Comment = lpeg.Rec(lpeg.P"--" * #Open * (LongStringCm1 / function() return end + lpeg.T(tlerror.labels["LongString"])),
49 lpeg.T(tlerror.labels["LongComment"]), tlerror.labels["LongString"]) + 48 lpeg.T(tlerror.labels["LongComment"]), tlerror.labels["LongString"]) +
50 lpeg.P("--") * (lpeg.P(1) - lpeg.P("\n"))^0 49 lpeg.P("--") * (lpeg.P(1) - lpeg.P("\n"))^0
51 50