Skip to main content

ling/semantic/
mod.rs

1mod resolver;
2mod scope;
3mod symbol;
4mod typeck;
5mod builtins;
6
7use crate::core::LingResult;
8use crate::parser::ast::Program;
9use crate::semantic::typeck::TypeChecker;
10
11#[derive(Clone, Debug, Default)]
12pub struct SemanticAnalyzer {
13    type_checker: TypeChecker,
14}
15
16impl SemanticAnalyzer {
17    pub fn new() -> Self {
18        Self { type_checker: TypeChecker::new() }
19    }
20
21    pub fn analyze(&mut self, program: &Program) -> LingResult<()> {
22        self.type_checker.check(program)
23    }
24}