From 6df7f672d01fb8a8b2b93908c7d6eb2382fe692f Mon Sep 17 00:00:00 2001 From: Selimaj Dev Date: Wed, 15 Apr 2026 08:32:29 +0200 Subject: [PATCH] Simple semantic analysis structure --- Cargo.lock | 5 +++++ Cargo.toml | 1 + semantic/src/lib.rs | 15 ++------------- semantic/src/top_level.rs | 18 ++++++++++++++++++ 4 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 semantic/src/top_level.rs diff --git a/Cargo.lock b/Cargo.lock index b134b8e..53b22b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,6 +79,7 @@ name = "mist" version = "0.1.0" dependencies = [ "parser", + "semantic", "serde", "serde_json", ] @@ -154,6 +155,10 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "semantic" +version = "0.1.0" + [[package]] name = "serde" version = "1.0.228" diff --git a/Cargo.toml b/Cargo.toml index 9afc151..2a9e8f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,3 +7,4 @@ edition = "2024" serde = { version = "1.0.228", features = ["serde_derive"] } serde_json = "1.0.149" parser = { path = "./parser" } +semantic = { path = "./semantic" } diff --git a/semantic/src/lib.rs b/semantic/src/lib.rs index b93cf3f..b4ef974 100644 --- a/semantic/src/lib.rs +++ b/semantic/src/lib.rs @@ -1,14 +1,3 @@ -pub fn add(left: u64, right: u64) -> u64 { - left + right -} +pub mod top_level; -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn it_works() { - let result = add(2, 2); - assert_eq!(result, 4); - } -} +pub struct Scope {} diff --git a/semantic/src/top_level.rs b/semantic/src/top_level.rs new file mode 100644 index 0000000..5de1c84 --- /dev/null +++ b/semantic/src/top_level.rs @@ -0,0 +1,18 @@ +use std::collections::HashMap; + +pub struct TypeSymbol { + export: bool, + name: String, +} + +pub struct FunctionSymbol { + export: bool, + name: String, + params: HashMap, +} + +pub struct StructSymbol { + export: bool, + name: String, + fields: HashMap, +}