diff options
author | Bad Diode <bd@badd10de.dev> | 2022-04-18 16:27:21 -0300 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2022-04-18 16:27:21 -0300 |
commit | 3da041f2e17fdeb69bf345aadf89c5fcc1814260 (patch) | |
tree | c1979ffee13f45f757712a61304a3edba89a80f5 /src/parser.h | |
parent | dcd3192e50d7b4ea333ecf57a7e8b325af145547 (diff) | |
download | bdl-3da041f2e17fdeb69bf345aadf89c5fcc1814260.tar.gz bdl-3da041f2e17fdeb69bf345aadf89c5fcc1814260.zip |
Move semantic analysis to separate file
Diffstat (limited to 'src/parser.h')
-rw-r--r-- | src/parser.h | 22 |
1 files changed, 3 insertions, 19 deletions
diff --git a/src/parser.h b/src/parser.h index cc3ba92..206ca4c 100644 --- a/src/parser.h +++ b/src/parser.h | |||
@@ -3,32 +3,16 @@ | |||
3 | 3 | ||
4 | #include "lexer.h" | 4 | #include "lexer.h" |
5 | #include "nodes.h" | 5 | #include "nodes.h" |
6 | #include "hashtable.h" | ||
7 | 6 | ||
8 | typedef struct Type { | 7 | typedef Node* Root; |
9 | StringView name; | ||
10 | size_t size; // (bytes) | ||
11 | } Type; | ||
12 | |||
13 | typedef struct Scope { | ||
14 | struct Scope *parent; | ||
15 | HashTable *symbols; | ||
16 | HashTable *types; | ||
17 | } Scope; | ||
18 | |||
19 | typedef struct ParseTree { | ||
20 | Node **roots; | ||
21 | Scope *global_scope; | ||
22 | Scope *current_scope; | ||
23 | } ParseTree; | ||
24 | 8 | ||
25 | typedef struct Parser { | 9 | typedef struct Parser { |
26 | Token *tokens; | 10 | Token *tokens; |
27 | size_t current_token; | 11 | size_t current_token; |
28 | ParseTree *parse_tree; | 12 | Root *roots; |
29 | } Parser; | 13 | } Parser; |
30 | 14 | ||
31 | ParseTree * parse(Token *tokens); | 15 | Root * parse(Token *tokens); |
32 | Node * parse_next(Parser *parser); | 16 | Node * parse_next(Parser *parser); |
33 | 17 | ||
34 | #endif // BDL_PARSER_H | 18 | #endif // BDL_PARSER_H |