Working on #48 : Added BaseExprParser and BaseNodeParser.py

This commit is contained in:
2021-03-10 21:09:09 +01:00
parent 998ea160be
commit 9c4991923e
18 changed files with 317 additions and 198 deletions
+9 -4
View File
@@ -42,7 +42,7 @@ class ParserInput:
self.yield_oef = yield_oef
self.start = start or 0
if end:
if end is not None:
self.original_end = end # forced index of the last token
self.end = self.original_end # index of the last token => len(tokens) - 1 if full tokens
else:
@@ -115,6 +115,7 @@ class ParserInput:
self.pos += 1
if self.pos > self.end:
self.token = self.tokens[-1]
return False
self.token = self.tokens[self.pos]
@@ -128,7 +129,11 @@ class ParserInput:
return False
self.token = self.tokens[self.pos]
return self.pos <= self.end
if self.pos <= self.end:
return True
else:
self.token = self.tokens[-1]
return False
def the_token_after(self, skip_whitespace=True):
"""
@@ -137,13 +142,13 @@ class ParserInput:
"""
my_pos = self.pos + 1
if my_pos > self.end:
return Token(TokenKind.EOF, "", -1, -1, -1)
return self.tokens[-1]
if skip_whitespace:
while self.tokens[my_pos].type in (TokenKind.WHITESPACE, TokenKind.NEWLINE):
my_pos += 1
if my_pos > self.end:
return Token(TokenKind.EOF, "", -1, -1, -1)
return self.tokens[-1]
return self.tokens[my_pos]