blob: 8db3d05eb983aa39244943d4edfa314ae38dfc3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#pragma once
#include "symbol_table.hpp"
#include "ast_node.hpp"
class SemanticAnalyzer {
public:
explicit SemanticAnalyzer();
SymbolTable analyze(ASTNode* node);
Symbol* analyzeVariable(ASTNode* node);
Symbol* analyzeFunction(ASTNode* node);
ASTNode* advance();
ASTNode* peek();
private:
SymbolTable symbol_table;
Scope* current_scope;
int current_scope_level;
};
|