From 8ed01c4ca2d2356f008b40d8498173009f71d295 Mon Sep 17 00:00:00 2001 From: A404M Date: Thu, 27 Mar 2025 07:35:58 +0330 Subject: fix bug in multiple dereference --- src/compiler/parser.c | 5 +++-- src/runner/runner.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 17d596b..2ab8860 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -105,7 +105,8 @@ static constexpr ParserOrder PARSER_ORDER[] = { }, { .ltr = false, - ORDER_ARRAY(LEXER_TOKEN_SYMBOL_FUNCTION_ARROW, ), + ORDER_ARRAY(LEXER_TOKEN_SYMBOL_FUNCTION_ARROW, + LEXER_TOKEN_SYMBOL_POINTER, ), }, { .ltr = true, @@ -114,7 +115,7 @@ static constexpr ParserOrder PARSER_ORDER[] = { { .ltr = true, ORDER_ARRAY(LEXER_TOKEN_SYMBOL_PLUS, LEXER_TOKEN_SYMBOL_MINUS, - LEXER_TOKEN_SYMBOL_POINTER, LEXER_TOKEN_SYMBOL_ADDRESS, ), + LEXER_TOKEN_SYMBOL_ADDRESS, ), }, { .ltr = true, diff --git a/src/runner/runner.c b/src/runner/runner.c index efb91ee..4966893 100644 --- a/src/runner/runner.c +++ b/src/runner/runner.c @@ -868,7 +868,8 @@ AstTree *runExpression(AstTree *expr, bool *shouldRet) { case AST_TREE_TOKEN_OPERATOR_DEREFERENCE: { AstTreeSingleChild *metadata = expr->metadata; AstTree *operand = runExpression(metadata, shouldRet); - if (metadata->token != AST_TREE_TOKEN_VARIABLE) { + if (operand->token != AST_TREE_TOKEN_VARIABLE) { + printLog("%s", AST_TREE_TOKEN_STRINGS[operand->token]); UNREACHABLE; } AstTreeVariable *variable = operand->metadata; -- cgit v1.2.3