Top level scope
This commit is contained in:
+1
-2
@@ -1,3 +1,2 @@
|
|||||||
|
pub mod scope;
|
||||||
pub mod top_level;
|
pub mod top_level;
|
||||||
|
|
||||||
pub struct Scope {}
|
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
use std::{
|
||||||
|
collections::HashMap,
|
||||||
|
sync::{Arc, Mutex},
|
||||||
|
};
|
||||||
|
|
||||||
|
use crate::top_level;
|
||||||
|
|
||||||
|
pub enum Symbol {
|
||||||
|
Function(top_level::FunctionSymbol),
|
||||||
|
TypeSymbol(top_level::TypeSymbol),
|
||||||
|
StructSymbol(top_level::StructSymbol),
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Scope {
|
||||||
|
pub parent: Option<Arc<Scope>>,
|
||||||
|
pub variables: Mutex<HashMap<String, Symbol>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Scope {
|
||||||
|
pub fn from_top_level() {}
|
||||||
|
}
|
||||||
@@ -1,18 +1,20 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub struct TypeSymbol {
|
pub struct TypeSymbol {
|
||||||
export: bool,
|
pub export: bool,
|
||||||
name: String,
|
pub name: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct FunctionSymbol {
|
pub struct FunctionSymbol {
|
||||||
export: bool,
|
pub export: bool,
|
||||||
name: String,
|
pub name: String,
|
||||||
params: HashMap<String, TypeSymbol>,
|
pub params: HashMap<String, TypeSymbol>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct StructSymbol {
|
pub struct StructSymbol {
|
||||||
export: bool,
|
pub export: bool,
|
||||||
name: String,
|
pub name: String,
|
||||||
fields: HashMap<String, TypeSymbol>,
|
pub fields: HashMap<String, TypeSymbol>,
|
||||||
|
pub methods: HashMap<String, FunctionSymbol>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user