From 7e29eae526f7a5014934b92a239923dd30835afd Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Mon, 5 Aug 2019 21:31:48 -0400 Subject: WIP Add function and array info to node struct --- node.c | 3 +++ node.h | 13 +++++++++++++ pc.y | 12 +++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/node.c b/node.c index 0e87370..40ed47c 100644 --- a/node.c +++ b/node.c @@ -17,6 +17,9 @@ char *str; p->var_type = -1; + p->func_info = NULL; + p->array_info = NULL; + return p; } diff --git a/node.h b/node.h index 90e3936..e59cb86 100644 --- a/node.h +++ b/node.h @@ -1,5 +1,15 @@ #ifndef NODE_H #define NODE_H +/*function/array info structs*/ +struct fi { + int argc; + int *argv; +}; + +struct ai { + int size; + int start_idx; +}; /* Linked list */ @@ -7,6 +17,9 @@ typedef struct node_s { char *name; struct node_s *next; int var_type; + + struct fi* func_info; + struct ai* array_info; } node; /*constructor*/ diff --git a/pc.y b/pc.y index 81cb69b..cd993ec 100644 --- a/pc.y +++ b/pc.y @@ -167,8 +167,18 @@ sub_prog_declaration sub_prog_head :FUNC ID arguments ':' standard_type ';' { + node *tmp; + int i = -1; + check_id(cur_scope->prev, $2); - scope_insert(cur_scope->prev, $2); + tmp = scope_insert(cur_scope->prev, $2); + + assert(tmp->func_info = malloc(sizeof struct fi)); + /*TODO add count of parameters*/ + tmp->func_info->argc = i; + assert(tmp->func_info->argv = malloc(i * sizeof int)); + + tmp->var_type = $5 cur_scope->ret_var = scope_insert(cur_scope, $2); cur_scope->ret_var->var_type = $5; -- cgit v1.1