aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2022-04-18 16:27:21 -0300
committerBad Diode <bd@badd10de.dev>2022-04-18 16:27:21 -0300
commit3da041f2e17fdeb69bf345aadf89c5fcc1814260 (patch)
treec1979ffee13f45f757712a61304a3edba89a80f5 /src/parser.h
parentdcd3192e50d7b4ea333ecf57a7e8b325af145547 (diff)
downloadbdl-3da041f2e17fdeb69bf345aadf89c5fcc1814260.tar.gz
bdl-3da041f2e17fdeb69bf345aadf89c5fcc1814260.zip
Move semantic analysis to separate file
Diffstat (limited to 'src/parser.h')
-rw-r--r--src/parser.h22
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
8typedef struct Type { 7typedef Node* Root;
9 StringView name;
10 size_t size; // (bytes)
11} Type;
12
13typedef struct Scope {
14 struct Scope *parent;
15 HashTable *symbols;
16 HashTable *types;
17} Scope;
18
19typedef struct ParseTree {
20 Node **roots;
21 Scope *global_scope;
22 Scope *current_scope;
23} ParseTree;
24 8
25typedef struct Parser { 9typedef 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
31ParseTree * parse(Token *tokens); 15Root * parse(Token *tokens);
32Node * parse_next(Parser *parser); 16Node * parse_next(Parser *parser);
33 17
34#endif // BDL_PARSER_H 18#endif // BDL_PARSER_H