diff --git a/src/compiler/mod.rs b/src/compiler/mod.rs index 722bec1..33cf372 100644 --- a/src/compiler/mod.rs +++ b/src/compiler/mod.rs @@ -1,8 +1,7 @@ +use crate::ast::CompilationUnit; use crate::parser::{DeimosParser, Rule}; -use crate::vm::lib::DmLib; -use pest::Parser; +use crate::module::DmModule; -pub fn compile(src_unit: &str) -> DmLib { - let p = DeimosParser::parse(Rule::compilation_unit, src_unit).unwrap(); +pub fn compile(module: &mut DmModule, compilation_unit: CompilationUnit) { todo!() } diff --git a/src/lib.rs b/src/lib.rs index b77c95b..ce83d69 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,3 +4,4 @@ pub mod parser; mod util; pub mod vm; pub mod ast; +pub mod module; diff --git a/src/module/mod.rs b/src/module/mod.rs new file mode 100644 index 0000000..2354a6c --- /dev/null +++ b/src/module/mod.rs @@ -0,0 +1,17 @@ +pub struct DmModule { + pub namespace: DmNamespace, +} + +pub enum NamespaceVisibility { + Public, + Partial { + visible_to_fqns: Vec + }, + Private +} + +pub struct DmNamespace { + pub name: String, + pub dependencies: Vec, + pub visibility: NamespaceVisibility +}