aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Murbach Maidl <andremm@gmail.com>2015-10-07 22:06:28 -0300
committerAndre Murbach Maidl <andremm@gmail.com>2015-10-07 22:06:28 -0300
commit779bb8c74418d41344268525c5208f874626dcd2 (patch)
tree134db45d4afb230ff42e624d03ac8c3b926b644e
parenta949129c2f3d24c7614093376083082f5beb83da (diff)
downloadlpeglabel-779bb8c74418d41344268525c5208f874626dcd2.tar.gz
lpeglabel-779bb8c74418d41344268525c5208f874626dcd2.tar.bz2
lpeglabel-779bb8c74418d41344268525c5208f874626dcd2.zip
Adding some unusual annotations
-rwxr-xr-xexamples/typedlua/test.lua12
-rw-r--r--examples/typedlua/tlerror.lua6
-rw-r--r--examples/typedlua/tllexer.lua6
-rw-r--r--examples/typedlua/tlparser.lua8
4 files changed, 19 insertions, 13 deletions
diff --git a/examples/typedlua/test.lua b/examples/typedlua/test.lua
index aa78856..4e173b9 100755
--- a/examples/typedlua/test.lua
+++ b/examples/typedlua/test.lua
@@ -1813,7 +1813,7 @@ concat2 = 2^3..1
1813test.lua:1:15: syntax error, unexpected '.1', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', '..', '-', '+', '%', '/', '//', '*', '^' 1813test.lua:1:15: syntax error, unexpected '.1', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', '..', '-', '+', '%', '/', '//', '*', '^'
1814]=] 1814]=]
1815e = [=[ 1815e = [=[
1816test.lua:1:15: unexpected '.1', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', '..', '-', '+', '%', '/', '//', '*', '^' 1816test.lua:1:13: malformed <number>
1817]=] 1817]=]
1818 1818
1819r, m = parse(s) 1819r, m = parse(s)
@@ -1926,7 +1926,7 @@ goto label
1926test.lua:2:1: syntax error, unexpected 'goto', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '~', '-', 'not' 1926test.lua:2:1: syntax error, unexpected 'goto', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '~', '-', 'not'
1927]=] 1927]=]
1928e = [=[ 1928e = [=[
1929test.lua:2:1: unexpected 'goto', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '~', '-', 'not' 1929test.lua:2:1: invalid statement after 'return'
1930]=] 1930]=]
1931 1931
1932r, m = parse(s) 1932r, m = parse(s)
@@ -2106,7 +2106,7 @@ return 1,1-2*3+4,"alo";
2106test.lua:2:1: syntax error, unexpected 'return', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '~', '-', 'not' 2106test.lua:2:1: syntax error, unexpected 'return', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '~', '-', 'not'
2107]=] 2107]=]
2108e = [=[ 2108e = [=[
2109test.lua:2:1: unexpected 'return', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '~', '-', 'not' 2109test.lua:2:1: invalid statement
2110]=] 2110]=]
2111 2111
2112r, m = parse(s) 2112r, m = parse(s)
@@ -2193,7 +2193,7 @@ x = ...:any
2193test.lua:1:8: syntax error, unexpected ':', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', '..', '-', '+', '%', '/', '//', '*', '^' 2193test.lua:1:8: syntax error, unexpected ':', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', '..', '-', '+', '%', '/', '//', '*', '^'
2194]=] 2194]=]
2195e = [=[ 2195e = [=[
2196test.lua:1:8: unexpected ':', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', '..', '-', '+', '%', '/', '//', '*', '^' 2196test.lua:1:8: invalid statement
2197]=] 2197]=]
2198 2198
2199r, m = parse(s) 2199r, m = parse(s)
@@ -2232,7 +2232,7 @@ local x:number*
2232test.lua:1:15: syntax error, unexpected '*', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', '=', ',', '?', '|' 2232test.lua:1:15: syntax error, unexpected '*', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', '=', ',', '?', '|'
2233]=] 2233]=]
2234e = [=[ 2234e = [=[
2235test.lua:1:15: unexpected '*', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', '=', ',', '?', '|' 2235test.lua:1:15: invalid local declaration
2236]=] 2236]=]
2237 2237
2238r, m = parse(s) 2238r, m = parse(s)
@@ -2258,7 +2258,7 @@ local x:number?|string?
2258test.lua:1:16: syntax error, unexpected '|', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', '=', ',' 2258test.lua:1:16: syntax error, unexpected '|', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', '=', ','
2259]=] 2259]=]
2260e = [=[ 2260e = [=[
2261test.lua:1:16: unexpected '|', expecting 'return', '(', 'Name', 'typealias', 'interface', 'goto', 'break', '::', 'local', 'function', 'const', 'repeat', 'for', 'do', 'while', 'if', ';', '=', ',' 2261test.lua:1:16: invalid local declaration
2262]=] 2262]=]
2263 2263
2264r, m = parse(s) 2264r, m = parse(s)
diff --git a/examples/typedlua/tlerror.lua b/examples/typedlua/tlerror.lua
index c51a53b..94be024 100644
--- a/examples/typedlua/tlerror.lua
+++ b/examples/typedlua/tlerror.lua
@@ -35,10 +35,11 @@ new_error("ParList", "expecting '...'")
35new_error("MethodCall", "expecting '(' for method call") 35new_error("MethodCall", "expecting '(' for method call")
36new_error("Label1", "expecting <name> after '::'") 36new_error("Label1", "expecting <name> after '::'")
37new_error("Label2", "expecting '::' to close label declaration") 37new_error("Label2", "expecting '::' to close label declaration")
38new_error("LocalAssign", "expecting expression list after '='") 38new_error("LocalAssign1", "expecting expression list after '='")
39new_error("LocalAssign2", "invalid local declaration")
39new_error("ForGen", "expecting 'in'") 40new_error("ForGen", "expecting 'in'")
40new_error("LocalFunc", "expecting <name> in local function declaration") 41new_error("LocalFunc", "expecting <name> in local function declaration")
41new_error("Exp", "malformed expression") 42new_error("RetStat", "invalid statement after 'return'")
42new_error("ElseIf", "expecting <exp> after 'elseif'") 43new_error("ElseIf", "expecting <exp> after 'elseif'")
43new_error("SubExpr_1", "malformed 'or' expression") 44new_error("SubExpr_1", "malformed 'or' expression")
44new_error("SubExpr_2", "malformed 'and' expression") 45new_error("SubExpr_2", "malformed 'and' expression")
@@ -52,6 +53,7 @@ new_error("SubExpr_9", "malformed addition expression")
52new_error("SubExpr_10", "malformed multiplication expression") 53new_error("SubExpr_10", "malformed multiplication expression")
53new_error("SubExpr_11", "malformed unary expression") 54new_error("SubExpr_11", "malformed unary expression")
54new_error("SubExpr_12", "malformed '^' expression") 55new_error("SubExpr_12", "malformed '^' expression")
56new_error("Stat", "invalid statement")
55 57
56local labels = {} 58local labels = {}
57for k, v in ipairs(errors) do 59for k, v in ipairs(errors) do
diff --git a/examples/typedlua/tllexer.lua b/examples/typedlua/tllexer.lua
index 2e11377..6517ba5 100644
--- a/examples/typedlua/tllexer.lua
+++ b/examples/typedlua/tllexer.lua
@@ -9,6 +9,10 @@ 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
12local function setffp (s, i, t, n) 16local function setffp (s, i, t, n)
13 if not t.ffp or i > t.ffp then 17 if not t.ffp or i > t.ffp then
14 t.ffp = i 18 t.ffp = i
@@ -75,7 +79,7 @@ end
75 79
76local Hex = (lpeg.P("0x") + lpeg.P("0X")) * tllexer.try(lpeg.xdigit^1, "Number") 80local Hex = (lpeg.P("0x") + lpeg.P("0X")) * tllexer.try(lpeg.xdigit^1, "Number")
77local Expo = lpeg.S("eE") * lpeg.S("+-")^-1 * tllexer.try(lpeg.digit^1, "Number") 81local Expo = lpeg.S("eE") * lpeg.S("+-")^-1 * tllexer.try(lpeg.digit^1, "Number")
78local Float = (((lpeg.digit^1 * lpeg.P(".") * lpeg.digit^0) + 82local Float = (((lpeg.digit^1 * lpeg.P(".") * lpeg.digit^0 * tllexer.try(-lpeg.P("."), "Number")) +
79 (lpeg.P(".") * lpeg.digit^1)) * Expo^-1) + 83 (lpeg.P(".") * lpeg.digit^1)) * Expo^-1) +
80 (lpeg.digit^1 * Expo) 84 (lpeg.digit^1 * Expo)
81local Int = lpeg.digit^1 85local Int = lpeg.digit^1
diff --git a/examples/typedlua/tlparser.lua b/examples/typedlua/tlparser.lua
index 67a06a4..dba94f7 100644
--- a/examples/typedlua/tlparser.lua
+++ b/examples/typedlua/tlparser.lua
@@ -11,7 +11,7 @@ local function chainl1 (pat, sep, label)
11end 11end
12 12
13local G = lpeg.P { "TypedLua"; 13local G = lpeg.P { "TypedLua";
14 TypedLua = tllexer.Shebang^-1 * tllexer.Skip * lpeg.V("Chunk") * -1; 14 TypedLua = tllexer.Shebang^-1 * tllexer.Skip * lpeg.V("Chunk") * tllexer.try(-1, "Stat");
15 -- type language 15 -- type language
16 Type = lpeg.V("NilableType"); 16 Type = lpeg.V("NilableType");
17 NilableType = lpeg.V("UnionType") * tllexer.symb("?")^-1; 17 NilableType = lpeg.V("UnionType") * tllexer.symb("?")^-1;
@@ -179,14 +179,14 @@ local G = lpeg.P { "TypedLua";
179 tllexer.kw("function") * lpeg.V("FuncName") * lpeg.V("FuncBody"); 179 tllexer.kw("function") * lpeg.V("FuncName") * lpeg.V("FuncBody");
180 LocalFunc = tllexer.kw("function") * 180 LocalFunc = tllexer.kw("function") *
181 tllexer.try(lpeg.V("Id"), "LocalFunc") * lpeg.V("FuncBody"); 181 tllexer.try(lpeg.V("Id"), "LocalFunc") * lpeg.V("FuncBody");
182 LocalAssign = lpeg.V("NameList") * 182 LocalAssign = lpeg.V("NameList") * tllexer.symb("=") * tllexer.try(lpeg.V("ExpList"), "LocalAssign1") +
183 ((tllexer.symb("=") * tllexer.try(lpeg.V("ExpList"), "LocalAssign")))^-1; 183 lpeg.V("NameList") * (#(-tllexer.symb("=") * (lpeg.V("Stat") + -1)) * lpeg.P(true)) + lpeg.T(tlerror.labels["LocalAssign2"]);
184 LocalStat = tllexer.kw("local") * 184 LocalStat = tllexer.kw("local") *
185 (lpeg.V("LocalTypeDec") + lpeg.V("LocalFunc") + lpeg.V("LocalAssign")); 185 (lpeg.V("LocalTypeDec") + lpeg.V("LocalFunc") + lpeg.V("LocalAssign"));
186 LabelStat = tllexer.symb("::") * tllexer.try(tllexer.token(tllexer.Name, "Name"), "Label1") * tllexer.try(tllexer.symb("::"), "Label2"); 186 LabelStat = tllexer.symb("::") * tllexer.try(tllexer.token(tllexer.Name, "Name"), "Label1") * tllexer.try(tllexer.symb("::"), "Label2");
187 BreakStat = tllexer.kw("break"); 187 BreakStat = tllexer.kw("break");
188 GoToStat = tllexer.kw("goto") * tllexer.token(tllexer.Name, "Name"); 188 GoToStat = tllexer.kw("goto") * tllexer.token(tllexer.Name, "Name");
189 RetStat = tllexer.kw("return") * 189 RetStat = tllexer.kw("return") * tllexer.try(-lpeg.V("Stat"), "RetStat") *
190 (lpeg.V("Expr") * (tllexer.symb(",") * lpeg.V("Expr"))^0)^-1 * 190 (lpeg.V("Expr") * (tllexer.symb(",") * lpeg.V("Expr"))^0)^-1 *
191 tllexer.symb(";")^-1; 191 tllexer.symb(";")^-1;
192 TypeDecStat = lpeg.V("Interface"); 192 TypeDecStat = lpeg.V("Interface");