From dcf90b72e058e24150cecefa36afb96a5a444a1e Mon Sep 17 00:00:00 2001 From: omicron Date: Mon, 14 Apr 2025 23:55:09 +0200 Subject: [PATCH] Add register and number values to AST nodes --- src/ast.h | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/ast.h b/src/ast.h index 0751b80..e5cfd04 100644 --- a/src/ast.h +++ b/src/ast.h @@ -1,6 +1,7 @@ #ifndef INCLUDE_SRC_AST_H_ #define INCLUDE_SRC_AST_H_ +#include "data/registers.h" #include "error.h" #include "lexer.h" #include "tokenlist.h" @@ -63,6 +64,16 @@ constexpr size_t node_default_children_cap = 8; /* 65K ought to be enough for anybody */ constexpr size_t node_max_children_cap = 1 << 16; +typedef struct number { + uint64_t value; + operand_size_t size; +} number_t; + +typedef struct register_ { + register_id_t id; + operand_size_t size; +} register_t; + struct ast_node { node_id_t id; tokenlist_entry_t *token_entry; @@ -71,11 +82,8 @@ struct ast_node { ast_node_t **children; union { - struct { - uint64_t value; - int size; - } integer; - char *name; + register_t reg; + number_t number; } value; };