diff options
Diffstat (limited to 'src/parser.h')
-rw-r--r-- | src/parser.h | 10 |
1 files changed, 7 insertions, 3 deletions
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 @@ | |||
2 | #define BDL_PARSER_H | 2 | #define BDL_PARSER_H |
3 | 3 | ||
4 | #include "lexer.h" | 4 | #include "lexer.h" |
5 | #include "hashtable.h" | ||
6 | 5 | ||
7 | typedef struct Environment { | 6 | typedef struct Environment { |
8 | HashTable *table; | 7 | struct Object **locals; |
9 | struct Environment *parent; | 8 | struct Environment *parent; |
10 | } Environment; | 9 | } Environment; |
11 | 10 | ||
@@ -74,6 +73,11 @@ typedef struct Parser { | |||
74 | 73 | ||
75 | typedef Object* Root; | 74 | typedef Object* Root; |
76 | 75 | ||
76 | typedef struct Program { | ||
77 | Root *roots; | ||
78 | Environment *env; | ||
79 | } Program; | ||
80 | |||
77 | // Token scanner. | 81 | // Token scanner. |
78 | Token next_token(Parser *parser); | 82 | Token next_token(Parser *parser); |
79 | Token previous_token(Parser *parser); | 83 | Token previous_token(Parser *parser); |
@@ -91,7 +95,7 @@ Object * parse_list(Parser *parser, Errors *errors); | |||
91 | Object * parse_lambda(Parser *parser, Errors *errors); | 95 | Object * parse_lambda(Parser *parser, Errors *errors); |
92 | Object * parse_if(Parser *parser, Errors *errors); | 96 | Object * parse_if(Parser *parser, Errors *errors); |
93 | Object * parse_var(Parser *parser, Errors *errors); | 97 | Object * parse_var(Parser *parser, Errors *errors); |
94 | Root * parse(Token *tokens, Errors *errors); | 98 | Program parse(Token *tokens, Errors *errors); |
95 | 99 | ||
96 | // Object operations. | 100 | // Object operations. |
97 | void object_display(Object *obj); | 101 | void object_display(Object *obj); |