From 87d3d8a9a99c77c5a1f156b3e3dc7d4c59e85f79 Mon Sep 17 00:00:00 2001 From: ahmedsamyh Date: Mon, 21 Oct 2024 13:37:03 +0500 Subject: [PATCH] Started working on Syntactical Analysis. --- main.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index 6eceb80..a60e698 100644 --- a/main.py +++ b/main.py @@ -46,7 +46,7 @@ class Token: def __repr__(self): return f"(Token)'{self.literal_string}' ({self.type_as_str()})" -class Lexer: +class Parser: def __init__(self, src): self.src = src self.line = 0 @@ -191,6 +191,15 @@ class Lexer: return None + def lex(self) -> [Token]: + tokens = [] + token = self.next_token() + tokens.append(token) + while token: + token = self.next_token() + tokens.append(token) + return tokens + def main(): program = sys.argv.pop(0) if (len(sys.argv) <= 0): @@ -202,16 +211,18 @@ def main(): src = file.read() # 2. Lexical Analysis - lexer = Lexer(src) - tokens = [] - token = lexer.next_token() - while token: - tokens.append(token) - token = lexer.next_token() - - pprint.pp(tokens) + parser = Parser(src) + tokens = parser.lex() + # pprint.pp(tokens) # 3. TODO: Syntactical Analysis + for i in range(0, len(tokens)-1): + token = tokens[i] + next = tokens[i+1] + + # pprint.pp("------------------------------") + # pprint.pp(f" Token: {token}") + # pprint.pp(f" Next: {next}") if __name__ == '__main__': -- 2.39.5