diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-30 10:13:11 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-30 10:13:11 +0200 |
commit | af3f2ebc42bf9dc64fc581b9f8f79e98895cb417 (patch) | |
tree | 5065fe2cc5ac04a7dcd2558f97e01222721d0664 /src/parser.h | |
parent | f9a6691243d59915dad8785a321ca021bb27de27 (diff) | |
download | bdl-af3f2ebc42bf9dc64fc581b9f8f79e98895cb417.tar.gz bdl-af3f2ebc42bf9dc64fc581b9f8f79e98895cb417.zip |
Add hashtable for Environment tracking
Diffstat (limited to 'src/parser.h')
-rwxr-xr-x | src/parser.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/parser.h b/src/parser.h index 14d9df5..d1eddc7 100755 --- a/src/parser.h +++ b/src/parser.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define BDL_PARSER_H | 2 | #define BDL_PARSER_H |
3 | 3 | ||
4 | #include "lexer.h" | 4 | #include "lexer.h" |
5 | #include "hashtable.h" | ||
5 | 6 | ||
6 | typedef enum ObjectType { | 7 | typedef enum ObjectType { |
7 | OBJ_TYPE_NIL, | 8 | OBJ_TYPE_NIL, |
@@ -58,6 +59,11 @@ typedef struct Object { | |||
58 | size_t col; | 59 | size_t col; |
59 | } Object; | 60 | } Object; |
60 | 61 | ||
62 | typedef struct Environment { | ||
63 | HashTable *table; | ||
64 | struct Environment *parent; | ||
65 | }; | ||
66 | |||
61 | typedef struct Parser { | 67 | typedef struct Parser { |
62 | Token *tokens; | 68 | Token *tokens; |
63 | size_t current; | 69 | size_t current; |
@@ -86,6 +92,7 @@ Root * parse(Token *tokens, Errors *errors); | |||
86 | 92 | ||
87 | // Object operations. | 93 | // Object operations. |
88 | void object_display(Object *obj); | 94 | void object_display(Object *obj); |
95 | bool object_equal(Object *a, Object *b); | ||
89 | 96 | ||
90 | // Manage resources. | 97 | // Manage resources. |
91 | Object * object_alloc(Token tok, ObjectType type); | 98 | Object * object_alloc(Token tok, ObjectType type); |