Skip to content

Commit d355a1f

Browse files
committed
fix #67 remove invalid continue keyword from grammar
1 parent b6d95a8 commit d355a1f

File tree

9 files changed

+811
-827
lines changed

9 files changed

+811
-827
lines changed

luaparser/astnodes.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -395,14 +395,6 @@ class Break(Statement):
395395
def __init__(self, **kwargs):
396396
super(Break, self).__init__("Break", **kwargs)
397397

398-
399-
class Continue(Statement):
400-
"""Define the continue lua statement."""
401-
402-
def __init__(self, **kwargs):
403-
super(Continue, self).__init__("Continue", **kwargs)
404-
405-
406398
class Return(Statement):
407399
"""Define the Lua return statement.
408400

luaparser/builder.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,8 +325,6 @@ def visitRetstat(self, ctx: LuaParser.RetstatContext):
325325
))
326326
elif ctx.BREAK():
327327
return self.add_context(ctx, Break())
328-
else:
329-
return self.add_context(ctx, Continue())
330328

331329
# Visit a parse tree produced by LuaParser#label.
332330
def visitLabel(self, ctx: LuaParser.LabelContext):

luaparser/parser/LuaLexer.g4

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ LOCAL : 'local';
3232
LT : '<';
3333
GT : '>';
3434
RETURN : 'return';
35-
CONTINUE : 'continue';
3635
CC : '::';
3736
NIL : 'nil';
3837
FALSE : 'false';

luaparser/parser/LuaLexer.interp

Lines changed: 1 addition & 4 deletions
Large diffs are not rendered by default.

luaparser/parser/LuaLexer.py

Lines changed: 346 additions & 351 deletions
Large diffs are not rendered by default.

luaparser/parser/LuaParser.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ attrib
6060
;
6161

6262
retstat
63-
: ('return' explist? | 'break' | 'continue') ';'?
63+
: ('return' explist? | 'break' ) ';'?
6464
;
6565

6666
label

luaparser/parser/LuaParser.interp

Lines changed: 1 addition & 3 deletions
Large diffs are not rendered by default.

luaparser/parser/LuaParser.py

Lines changed: 437 additions & 446 deletions
Large diffs are not rendered by default.

luaparser/tests/test_statements.py

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -513,17 +513,6 @@ def test_break(self):
513513
exp = Chunk(Block([Break()]))
514514
self.assertEqual(exp, tree)
515515

516-
def test_continue(self):
517-
tree = ast.parse(
518-
textwrap.dedent(
519-
"""
520-
continue
521-
"""
522-
)
523-
)
524-
exp = Chunk(Block([Continue()]))
525-
self.assertEqual(exp, tree)
526-
527516
def test_return(self):
528517
tree = ast.parse(r"return nil")
529518
exp = Chunk(Block([Return([Nil()])]))
@@ -614,3 +603,28 @@ def test_method(self):
614603

615604
def test_exceptions(self):
616605
self.assertRaises(SyntaxException, ast.parse, 'print(!h!)')
606+
607+
def test_integration_can_use_continue_name(self):
608+
tree = ast.parse(
609+
textwrap.dedent(
610+
"""
611+
continue = "hello world"
612+
print(continue)
613+
"""
614+
)
615+
)
616+
exp = Chunk(
617+
Block(
618+
[
619+
Assign(
620+
targets=[Name("continue")],
621+
values=[String(b"hello world", "hello world", StringDelimiter.DOUBLE_QUOTE)],
622+
),
623+
Call(
624+
func=Name("print"),
625+
args=[Name("continue")],
626+
)
627+
]
628+
)
629+
)
630+
self.assertEqual(exp, tree)

0 commit comments

Comments
 (0)