aboutsummaryrefslogtreecommitdiff
path: root/include/semantic_analyzer.hpp
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;
};