From: ahmedsamyh Date: Thu, 28 Nov 2024 17:02:26 +0000 (+0500) Subject: WIP: Improve parseStatement() X-Git-Url: https://www.git.momoyon.org/?a=commitdiff_plain;h=f64789e7d2823ba01ca29963e0ee87fcfbea16b2;p=lang.git WIP: Improve parseStatement() --- diff --git a/main.momo b/main.momo index 08ac0a1..7764457 100644 --- a/main.momo +++ b/main.momo @@ -1 +1,4 @@ -msg: string = 1; +msg != 0; +msg: string = "test"; +msg = string; +// msg: string = "Hello, World"; diff --git a/main.py b/main.py index 0201fb8..9475540 100644 --- a/main.py +++ b/main.py @@ -542,17 +542,21 @@ class Parser: except ParseUnexpectedType: pass + # Didn't have : if colon_ast == None: - semicolon = self.parseSemicolon() - return AstNodeStatement(var_name_ast.token, var_name_ast, None, None) + # Have = + equal = self.parseEqual() + if equal == None: + # Only a ; statement + semicolon = self.parseSemicolon() + return AstNodeStatement(var_name_ast.token, var_name_ast, None, None, None) + else: + return AstNodeStatement(var_name_ast.token, var_name_ast, None, equal, None) dlog(var_name_ast) dlog(colon_ast) - if len(self.tokens) <= 0: raise ParseEOF(TokenType.EQUAL) - if tokens[0].typ != TokenType.EQUAL: raise ParseUnexpectedType(TokenType.EQUAL, tokens[0]) - - equal = tokens.pop(0) + equal = self.parseEqual() expr = self.parseExpression() @@ -562,6 +566,13 @@ class Parser: return AstNodeStatement(var_name_ast.token, var_name_ast, colon_ast, equal, expr) + def parseEqual(self) -> Token | None: + if len(self.tokens) <= 0: raise ParseEOF(TokenType.EQUAL, TokenType.SEMICOLON) + if self.tokens[0].typ != TokenType.EQUAL: + return None + # raise ParseUnexpectedType(TokenType.EQUAL, self.tokens[0]) + return self.tokens.pop(0) + def parseSemicolon(self) -> Token: if len(self.tokens) <= 0: raise ParseEOF(TokenType.SEMICOLON) if self.tokens[0].typ != TokenType.SEMICOLON: raise ParseUnexpectedType(self.tokens[0], TokenType.SEMICOLON, TokenType.COLON)