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}