From 91f02bb7ab1a3767adccdc93d1aaba812805fbc6 Mon Sep 17 00:00:00 2001 From: afonya2 Date: Sun, 8 Jun 2025 22:21:57 +0200 Subject: [PATCH] added identifier table get --- src/parser.rs | 11 +++++++++++ test.as | 7 ++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index 807c818..f2b105a 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -491,6 +491,17 @@ fn read_exp(pos: &mut usize, input: &Vec, ends: &Vec, parse_ends: } *pos += 1; expressions.push(ASTPart::TableGet(AstTableGet { table: Box::new(ASTPart::VarRead(AstVarRead { variable: token.value.clone(), pos: var_pos })), key: Box::new(keyy), pos: var_pos+1 })); + } else if next_token.typ == TokenType::SEPARATOR && next_token.value == "." { + let var_pos = token.pos; + *pos += 1; + let keyy = &input[*pos]; + if keyy.typ != TokenType::IDENTIFIER { + let err = create_error(&format!("Expected identifier after `.`"), keyy.pos, ErrorType::SyntaxError, ErrorSubType::Expected); + print_error(&err, &ctx); + process::exit(1); + } + *pos += 1; + expressions.push(ASTPart::TableGet(AstTableGet { table: Box::new(ASTPart::VarRead(AstVarRead { variable: token.value.clone(), pos: var_pos })), key: Box::new(ASTPart::String(AstString { value: keyy.value.clone(), pos: keyy.pos })), pos: var_pos+1 })); } else { expressions.push(ASTPart::VarRead(AstVarRead { variable: token.value.clone(), pos: token.pos })); } diff --git a/test.as b/test.as index 201343c..904cade 100644 --- a/test.as +++ b/test.as @@ -1,5 +1,2 @@ -ugass(szaft"test"szaft, ugass) -gethelj a = lőcsve() { - gethelj b = 1 + piszv -} -a() \ No newline at end of file +gethelj a = {[szaft"test"szaft] = 1} +ugass(a.1) \ No newline at end of file