From b1c620e56627b5a96edc2a544c3afeaa458defed Mon Sep 17 00:00:00 2001 From: "Taha. Dostifam" Date: Mon, 3 Mar 2025 02:41:18 +0330 Subject: [PATCH] refactor --- examples/main.cyr | 10 +++++++--- parser/src/expressions.rs | 7 +++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/examples/main.cyr b/examples/main.cyr index 7475d9b..3e1f43a 100755 --- a/examples/main.cyr +++ b/examples/main.cyr @@ -1,7 +1,11 @@ import std::io; +struct User { + name: string; +} + fn main() { - #arr: i32[4] = [1, 2, 3]; - #size = len(arr); - std::io::printf("size: %d\n", size); + #user1 = User { + name: "Taha" + }; } \ No newline at end of file diff --git a/parser/src/expressions.rs b/parser/src/expressions.rs index 9727ff2..8339c4d 100755 --- a/parser/src/expressions.rs +++ b/parser/src/expressions.rs @@ -326,7 +326,7 @@ impl<'a> Parser<'a> { } else if self.current_token_is(TokenKind::As) { self.next_token(); // consume as expression } else { - panic!("Unexpected behaviour when trying to parse cast_as_expression."); + panic!("Unexpected behavior when trying to parse cast_as_expression."); } match self.parse_type_token() { @@ -513,6 +513,9 @@ impl<'a> Parser<'a> { } else { self.next_token(); let func_call = self.parse_func_call(*object_expr, start)?; + if self.current_token_is(TokenKind::RightParen) { + self.next_token(); + } Ok(Expression::FieldAccessOrMethodCall(vec![FieldAccessOrMethodCall { method_call: Some(func_call), field_access: None, @@ -532,7 +535,7 @@ impl<'a> Parser<'a> { field_inits: Vec::new(), loc: self.current_location(), })); - } + } loop { let field_name = match self.current_token.kind.clone() {