From 69f6b03296f96a60dd7fc103ff89d187f1a29aec Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Wed, 10 Nov 2021 16:40:29 +0100 Subject: Change Environment to store locals in array This will help directly translate the locals to assembly. --- src/parser.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/parser.h') diff --git a/src/parser.h b/src/parser.h index 9414a24..c117c61 100644 --- a/src/parser.h +++ b/src/parser.h @@ -2,10 +2,9 @@ #define BDL_PARSER_H #include "lexer.h" -#include "hashtable.h" typedef struct Environment { - HashTable *table; + struct Object **locals; struct Environment *parent; } Environment; @@ -74,6 +73,11 @@ typedef struct Parser { typedef Object* Root; +typedef struct Program { + Root *roots; + Environment *env; +} Program; + // Token scanner. Token next_token(Parser *parser); Token previous_token(Parser *parser); @@ -91,7 +95,7 @@ Object * parse_list(Parser *parser, Errors *errors); Object * parse_lambda(Parser *parser, Errors *errors); Object * parse_if(Parser *parser, Errors *errors); Object * parse_var(Parser *parser, Errors *errors); -Root * parse(Token *tokens, Errors *errors); +Program parse(Token *tokens, Errors *errors); // Object operations. void object_display(Object *obj); -- cgit v1.2.1