From deeb9350b4944b66d918fa0c4df8f762c941b457 Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Wed, 15 Apr 2026 09:18:56 +0200 Subject: [PATCH] Semantics in check --- semantic/src/scope.rs | 1 + semantic/src/top_level.rs | 5 +++++ src/main.rs | 6 ++++-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/semantic/src/scope.rs b/semantic/src/scope.rs index b395e5c..f4b70e7 100644 --- a/semantic/src/scope.rs +++ b/semantic/src/scope.rs @@ -2,6 +2,7 @@ use std::sync::Arc; use crate::top_level::TopLevelScope; +#[derive(Clone, Debug)] pub enum Scope { TopLevel(TopLevelScope), } diff --git a/semantic/src/top_level.rs b/semantic/src/top_level.rs index 1817dc7..a0caf07 100644 --- a/semantic/src/top_level.rs +++ b/semantic/src/top_level.rs @@ -4,13 +4,16 @@ use parser::ast::TopLevel; use parser::ast::{ParamList, TypeExpr}; +#[derive(Clone, Debug)] pub struct TypeSymbol(pub String); +#[derive(Clone, Debug)] pub struct VarSymbol { pub var_type: TypeSymbol, pub name: String, } +#[derive(Clone, Debug)] pub struct FunctionSymbol { pub export: bool, pub name: String, @@ -18,6 +21,7 @@ pub struct FunctionSymbol { pub return_type: Option, } +#[derive(Clone, Debug)] pub struct StructSymbol { pub export: bool, pub name: String, @@ -71,6 +75,7 @@ impl StructSymbol { } } +#[derive(Clone, Debug)] pub struct TopLevelScope { pub structs: HashMap, pub functions: HashMap, diff --git a/src/main.rs b/src/main.rs index ad40e2b..bff6a1f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -53,8 +53,10 @@ pub fn cmd_build() { fn cmd_check(path: &str) { let source = read_ms_file(path); match parser::parse(&source) { - Ok(_) => { - println!("ok"); + Ok(ast) => { + println!("parse: ok"); + + println!("{:#?}", semantic::scope::Scope::from_top(&ast)) } Err(e) => { eprintln!("parse error:\n{}", e);