aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-30 10:13:11 +0200
committerBad Diode <bd@badd10de.dev>2021-10-30 10:13:11 +0200
commitaf3f2ebc42bf9dc64fc581b9f8f79e98895cb417 (patch)
tree5065fe2cc5ac04a7dcd2558f97e01222721d0664 /src/parser.h
parentf9a6691243d59915dad8785a321ca021bb27de27 (diff)
downloadbdl-af3f2ebc42bf9dc64fc581b9f8f79e98895cb417.tar.gz
bdl-af3f2ebc42bf9dc64fc581b9f8f79e98895cb417.zip
Add hashtable for Environment tracking
Diffstat (limited to 'src/parser.h')
-rwxr-xr-xsrc/parser.h7
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
6typedef enum ObjectType { 7typedef 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
62typedef struct Environment {
63 HashTable *table;
64 struct Environment *parent;
65};
66
61typedef struct Parser { 67typedef 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.
88void object_display(Object *obj); 94void object_display(Object *obj);
95bool object_equal(Object *a, Object *b);
89 96
90// Manage resources. 97// Manage resources.
91Object * object_alloc(Token tok, ObjectType type); 98Object * object_alloc(Token tok, ObjectType type);