@@ -377,7 +377,7 @@ long string
377377]==]
378378]=]
379379e = [=[
380- test.lua:5:7: syntax error, unexpected '[', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
380+ test.lua:5:7: syntax error, unexpected '[', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
381381]=]
382382
383383r = parse (s )
@@ -393,7 +393,7 @@ ss6 = "testing unfinished string
393393-- short string test end
394394]=]
395395e = [=[
396- test.lua:3:7: syntax error, unexpected '"', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
396+ test.lua:3:7: syntax error, unexpected '"', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
397397]=]
398398
399399r = parse (s )
@@ -488,6 +488,16 @@ e = [=[
488488r = parse (s )
489489assert (r == e )
490490
491+ s = [=[
492+ q, r, f = 3//2, 3%2, 3/2
493+ ]=]
494+ e = [=[
495+ { `Set{ { `Id "q", `Id "r", `Id "f" }, { `Op{ "idiv", `Number "3", `Number "2" }, `Op{ "mod", `Number "3", `Number "2" }, `Op{ "div", `Number "3", `Number "2" } } } }
496+ ]=]
497+
498+ r = parse (s )
499+ assert (r == e )
500+
491501-- assignments
492502
493503s = [=[
@@ -551,6 +561,28 @@ e = [=[
551561r = parse (s )
552562assert (r == e )
553563
564+ -- bitwise expressions
565+
566+ s = [=[
567+ b = 1 & 0 | 1 ~ 1
568+ ]=]
569+ e = [=[
570+ { `Set{ { `Id "b" }, { `Op{ "bor", `Op{ "band", `Number "1", `Number "0" }, `Op{ "bxor", `Number "1", `Number "1" } } } } }
571+ ]=]
572+
573+ r = parse (s )
574+ assert (r == e )
575+
576+ s = [=[
577+ b = 1 & 0 | 1 >> 1 ~ 1
578+ ]=]
579+ e = [=[
580+ { `Set{ { `Id "b" }, { `Op{ "bor", `Op{ "band", `Number "1", `Number "0" }, `Op{ "bxor", `Op{ "shr", `Number "1", `Number "1" }, `Number "1" } } } } }
581+ ]=]
582+
583+ r = parse (s )
584+ assert (r == e )
585+
554586-- break
555587
556588s = [=[
@@ -1272,6 +1304,50 @@ test.lua:2:1: syntax error, unexpected 'EOF', expecting 'end', 'return', '(', 'N
12721304r = parse (s )
12731305assert (r == e )
12741306
1307+ -- arithmetic expressions
1308+
1309+ s = [=[
1310+ a = 3 / / 2
1311+ ]=]
1312+ e = [=[
1313+ test.lua:1:9: syntax error, unexpected '/', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', '#', '-', 'not'
1314+ ]=]
1315+
1316+ r = parse (s )
1317+ assert (r == e )
1318+
1319+ -- bitwise expressions
1320+
1321+ s = [=[
1322+ b = 1 && 1
1323+ ]=]
1324+ e = [=[
1325+ test.lua:1:8: syntax error, unexpected '&', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', '#', '-', 'not'
1326+ ]=]
1327+
1328+ r = parse (s )
1329+ assert (r == e )
1330+
1331+ s = [=[
1332+ b = 1 <> 0
1333+ ]=]
1334+ e = [=[
1335+ test.lua:1:8: syntax error, unexpected '>', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', '#', '-', 'not'
1336+ ]=]
1337+
1338+ r = parse (s )
1339+ assert (r == e )
1340+
1341+ s = [=[
1342+ b = 1 < < 0
1343+ ]=]
1344+ e = [=[
1345+ test.lua:1:9: syntax error, unexpected '<', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', '#', '-', 'not'
1346+ ]=]
1347+
1348+ r = parse (s )
1349+ assert (r == e )
1350+
12751351-- break
12761352
12771353s = [=[
@@ -1308,14 +1384,13 @@ test.lua:3:1: syntax error, <break> not inside a loop
13081384r = parse (s )
13091385assert (r == e )
13101386
1311-
13121387-- concatenation expressions
13131388
13141389s = [=[
13151390concat2 = 2^3..1
13161391]=]
13171392e = [=[
1318- test.lua:1:15: syntax error, unexpected '.1', expecting 'return', '(', 'Name', 'goto', 'break', '::', 'local', 'function', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '..', '-', '+', '%', '/', '*', '^'
1393+ test.lua:1:15: syntax error, unexpected '.1', expecting 'return', '(', 'Name', 'goto', 'break', '::', 'local', 'function', 'repeat', 'for', 'do', 'while', 'if', ';', ',', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', ' ..', '-', '+', '%', '/', '/ /', '*', '^'
13191394]=]
13201395
13211396r = parse (s )
@@ -1349,7 +1424,7 @@ s = [=[
13491424for i=1,10, do end
13501425]=]
13511426e = [=[
1352- test.lua:1:13: syntax error, unexpected 'do', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
1427+ test.lua:1:13: syntax error, unexpected 'do', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
13531428]=]
13541429
13551430r = parse (s )
@@ -1404,7 +1479,7 @@ s = [=[
14041479goto label
14051480]=]
14061481e = [=[
1407- test.lua:2:1: syntax error, unexpected 'goto', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
1482+ test.lua:2:1: syntax error, unexpected 'goto', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
14081483]=]
14091484
14101485r = parse (s )
@@ -1474,7 +1549,7 @@ elseif
14741549end
14751550]=]
14761551e = [=[
1477- test.lua:7:1: syntax error, unexpected 'end', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
1552+ test.lua:7:1: syntax error, unexpected 'end', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
14781553]=]
14791554
14801555r = parse (s )
@@ -1521,7 +1596,7 @@ s = [=[
15211596local a =
15221597]=]
15231598e = [=[
1524- test.lua:2:1: syntax error, unexpected 'EOF', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
1599+ test.lua:2:1: syntax error, unexpected 'EOF', expecting '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
15251600]=]
15261601
15271602r = parse (s )
@@ -1592,7 +1667,7 @@ return 1;
15921667return 1,1-2*3+4,"alo";
15931668]=]
15941669e = [=[
1595- test.lua:2:1: syntax error, unexpected 'return', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not'
1670+ test.lua:2:1: syntax error, unexpected 'return', expecting ';', '(', 'Name', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not'
15961671]=]
15971672
15981673r = parse (s )
@@ -1604,7 +1679,7 @@ s = [=[
16041679t = { , }
16051680]=]
16061681e = [=[
1607- test.lua:1:7: syntax error, unexpected ',', expecting '}', '(', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '#', '-', 'not', 'Name', '['
1682+ test.lua:1:7: syntax error, unexpected ',', expecting '}', '(', '{', 'function', '...', 'true', 'false', 'nil', 'String', 'Number', '~', ' #', '-', 'not', 'Name', '['
16081683]=]
16091684
16101685r = parse (s )
@@ -1671,7 +1746,7 @@ while (i < 10)
16711746end
16721747]=]
16731748e = [=[
1674- test.lua:3:3: syntax error, unexpected 'i', expecting 'do', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '..', '-', '+', '%', '/', '*', '^', 'String', '{', '(', ':', '[', '.'
1749+ test.lua:3:3: syntax error, unexpected 'i', expecting 'do', 'or', 'and', '>', '<', '>=', '<=', '==', '~=', '|', '~', '&', '>>', '<<', ' ..', '-', '+', '%', '/', '/ /', '*', '^', 'String', '{', '(', ':', '[', '.'
16751750]=]
16761751
16771752r = parse (s )
0 commit comments