diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-07-17 16:47:41 -0400 |
---|---|---|
committer | Xavier Claessens <xavier.claessens@collabora.com> | 2018-10-04 20:14:37 -0400 |
commit | a816e1c1fa2f70440e82b96eb027588c60de918b (patch) | |
tree | 997f9c75f93319693db04df25bc3ccde17f93744 /mesonbuild/mparser.py | |
parent | fa2e096aa00175b12dd3fa9e9adf4879637ee83e (diff) | |
download | meson-a816e1c1fa2f70440e82b96eb027588c60de918b.zip meson-a816e1c1fa2f70440e82b96eb027588c60de918b.tar.gz meson-a816e1c1fa2f70440e82b96eb027588c60de918b.tar.bz2 |
Interpreter: Add 'continue' and 'break' keywords
Closes: #3601
Diffstat (limited to 'mesonbuild/mparser.py')
-rw-r--r-- | mesonbuild/mparser.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py index 429f014..be5c807 100644 --- a/mesonbuild/mparser.py +++ b/mesonbuild/mparser.py @@ -91,8 +91,8 @@ class Lexer: self.code = code self.keywords = {'true', 'false', 'if', 'else', 'elif', 'endif', 'and', 'or', 'not', 'foreach', 'endforeach', - 'in'} - self.future_keywords = {'continue', 'break', 'return'} + 'in', 'continue', 'break'} + self.future_keywords = {'return'} self.token_specification = [ # Need to be sorted longest to shortest. ('ignore', re.compile(r'[ \t]')), @@ -243,6 +243,12 @@ class StringNode(ElementaryNode): def __str__(self): return "String node: '%s' (%d, %d)." % (self.value, self.lineno, self.colno) +class ContinueNode(ElementaryNode): + pass + +class BreakNode(ElementaryNode): + pass + class ArrayNode: def __init__(self, args): self.subdir = args.subdir @@ -759,6 +765,10 @@ class Parser: block = self.foreachblock() self.block_expect('endforeach', block_start) return block + if self.accept('continue'): + return ContinueNode(self.current) + if self.accept('break'): + return BreakNode(self.current) return self.statement() def codeblock(self): |