Create new parser (works for lists so far)

This commit is contained in:
Bartłomiej Pluta
2019-07-05 16:45:59 +02:00
parent 23e0f3f33e
commit ed73aa1ad1
32 changed files with 516 additions and 59 deletions

View File

@@ -25,7 +25,10 @@ class TokenList:
if self.cursor >= len(self.tokens):
raise RuntimeError(f"Cursor points to not existing token! Cursor = {self.cursor}, len = {len(self.tokens)}")
return self.tokens[self.cursor]
def isCurrent(self, type):
return self.hasCurrent() and self.current().type == type
def next(self, number=1):
return self.tokens[self.cursor + number]
@@ -42,14 +45,13 @@ class TokenList:
self.cursor += 1
def snapshot(self):
self.snapshot = self.cursor
return self.cursor
def reset(self):
self.cursor = self.snapshot
return self.tokens[self.cursor]
def reset(self, snap):
self.cursor = snap
def __str__(self):
return f"[Cursor: {self.cursor}\n{', '.join([str(token) for token in self.tokens])}]"
return f"[Current({self.cursor}): {self.current() if self.hasCurrent() else 'out of tokens'}\n{', '.join([str(token) for token in self.tokens])}]"
def __repr__(self):
return self.__str__()