aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Brunet <charles.brunet@optelgroup.com>2023-08-25 08:58:23 -0400
committerCharles Brunet <charles.brunet@optelgroup.com>2023-09-11 07:51:18 -0400
commit4b7a56caa265c54a9b77381e2db1819ed87f21de (patch)
tree4cf90941c60c87a0a8b0ba294e1c54cf7e8b359b
parentb94167ef50e891355a7d9a0014e6b0cf4ea1302d (diff)
downloadmeson-4b7a56caa265c54a9b77381e2db1819ed87f21de.zip
meson-4b7a56caa265c54a9b77381e2db1819ed87f21de.tar.gz
meson-4b7a56caa265c54a9b77381e2db1819ed87f21de.tar.bz2
parser: remember previous Token
-rw-r--r--mesonbuild/mparser.py23
1 files changed, 10 insertions, 13 deletions
diff --git a/mesonbuild/mparser.py b/mesonbuild/mparser.py
index 2ff32dc..ce83cc2 100644
--- a/mesonbuild/mparser.py
+++ b/mesonbuild/mparser.py
@@ -623,10 +623,12 @@ class Parser:
self.lexer = Lexer(code)
self.stream = self.lexer.lex(filename)
self.current: Token = Token('eof', '', 0, 0, 0, (0, 0), None)
+ self.previous = self.current
self.getsym()
self.in_ternary = False
def getsym(self) -> None:
+ self.previous = self.current
try:
self.current = next(self.stream)
except StopIteration:
@@ -831,10 +833,9 @@ class Parser:
while not isinstance(s, EmptyNode):
if self.accept('colon'):
a.set_kwarg_no_check(s, self.statement())
- potential = self.current
if not self.accept('comma'):
return a
- a.commas.append(potential)
+ a.commas.append(self.previous)
else:
raise ParseException('Only key:value pairs are valid in dict construction.',
self.getline(), s.lineno, s.colno)
@@ -846,19 +847,17 @@ class Parser:
a = ArgumentNode(self.current)
while not isinstance(s, EmptyNode):
- potential = self.current
if self.accept('comma'):
- a.commas.append(potential)
+ a.commas.append(self.previous)
a.append(s)
elif self.accept('colon'):
if not isinstance(s, IdNode):
raise ParseException('Dictionary key must be a plain identifier.',
self.getline(), s.lineno, s.colno)
a.set_kwarg(s, self.statement())
- potential = self.current
if not self.accept('comma'):
return a
- a.commas.append(potential)
+ a.commas.append(self.previous)
else:
a.append(s)
return a
@@ -888,17 +887,15 @@ class Parser:
return IndexNode(source_object, index_statement)
def foreachblock(self) -> ForeachClauseNode:
- t = self.current
self.expect('id')
- assert isinstance(t.value, str)
- varname = t
- varnames = [IdNode(t)]
+ assert isinstance(self.previous.value, str)
+ varname = self.previous
+ varnames = [IdNode(self.previous)]
if self.accept('comma'):
- t = self.current
self.expect('id')
- assert isinstance(t.value, str)
- varnames.append(IdNode(t))
+ assert isinstance(self.previous.value, str)
+ varnames.append(IdNode(self.previous))
self.expect('colon')
items = self.statement()