From 8d7c6a4a2b41969423c6e7408fab5666ec1b1a62 Mon Sep 17 00:00:00 2001 From: Ur Mom Date: Thu, 16 May 2024 18:04:02 +0200 Subject: [PATCH] changed ast implementation for cast --- CMakeLists.txt | 2 +- src/yacc/parser.y | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 213143c..ced5f45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,7 @@ set(YACC_GENERATED_SOURCE_FILE ${PROJECT_SOURCE_DIR}/src/yacc/parser.tab.c) add_custom_command(OUTPUT ${YACC_GENERATED_SOURCE_FILE} - COMMAND bison + COMMAND yacc ARGS -Wno-yacc -Wcounterexamples -d -o ${YACC_GENERATED_SOURCE_FILE} ${YACC_SOURCE_FILE} COMMENT "generate C source file for parser" diff --git a/src/yacc/parser.y b/src/yacc/parser.y index ece2282..753c7bc 100644 --- a/src/yacc/parser.y +++ b/src/yacc/parser.y @@ -283,10 +283,16 @@ boxcall: boxaccess argumentlist {AST_NODE_PTR boxcall = AST_new_node(AST_Call, N $$ = boxcall;}; -typecast: expr KeyAs type %prec KeyAs {$$ = AST_new_node(AST_Typecast, $1); +typecast: expr KeyAs type %prec KeyAs {AST_NODE_PTR cast = AST_new_node(AST_Typecast, NULL); + AST_push_node(cast, $1); + AST_push_node(cast, $3); + $$ = cast; DEBUG("Type-Cast"); }; -reinterpretcast: '(' type ')' expr {$$ = AST_new_node(AST_Transmute, $4); +reinterpretcast: '(' type ')' expr { AST_NODE_PTR cast = AST_new_node(AST_Transmute, NULL); + AST_push_node(cast, $4); + AST_push_node(cast, $2); + $$ = cast; DEBUG("Reinterpret-Cast"); };