pub struct SymbolTable {
pub root: Symbol,
pub stack: Stack,
pub symbols: SymbolMap,
pub diag_handler: DiagHandler,
/* private fields */
}
Expand description
Symbol table holding global and local symbols.
The symbol table consists of the following members:
- One root
Symbol
resolved from the initial source file. - A [
SourceCache
] of all loaded source files (accessible by qualified name, file path and source hash). - A
Stack
ofStackFrame
s. - A
SymbolMap
of all global symbols.
All these internal structures can be accessed by several implemented traits.
Fields§
§root: Symbol
Symbol of the initial source file.
stack: Stack
Stack of currently opened scopes with symbols while evaluation.
symbols: SymbolMap
Global symbols (including root).
diag_handler: DiagHandler
Source file diagnostics.
Implementations§
Source§impl SymbolTable
impl SymbolTable
Sourcepub fn new(
root: Identifier,
symbols: SymbolMap,
sources: Sources,
) -> ResolveResult<Self>
pub fn new( root: Identifier, symbols: SymbolMap, sources: Sources, ) -> ResolveResult<Self>
Root symbol (symbol node of initially read source file) List of all global symbols. Stack of currently opened scopes with local symbols while evaluation. Source file cache containing all source files loaded in the context and their syntax trees.
Sourcepub fn lookup_global(&mut self, name: &QualifiedName) -> ResolveResult<Symbol>
pub fn lookup_global(&mut self, name: &QualifiedName) -> ResolveResult<Symbol>
Lookup a symbol from global symbols.
Sourcepub fn search_paths(&self) -> &Vec<PathBuf>
pub fn search_paths(&self) -> &Vec<PathBuf>
Return search paths of this symbol table.
Trait Implementations§
Source§impl Default for SymbolTable
impl Default for SymbolTable
Source§fn default() -> SymbolTable
fn default() -> SymbolTable
Returns the “default value” for a type. Read more
Source§impl Display for SymbolTable
impl Display for SymbolTable
Source§impl GetSourceByHash for SymbolTable
impl GetSourceByHash for SymbolTable
Source§fn get_by_hash(&self, hash: u64) -> ResolveResult<Rc<SourceFile>>
fn get_by_hash(&self, hash: u64) -> ResolveResult<Rc<SourceFile>>
Find a project file by it’s hash value.
Source§impl Locals for SymbolTable
impl Locals for SymbolTable
Source§fn set_local_value(&mut self, id: Identifier, value: Value) -> EvalResult<()>
fn set_local_value(&mut self, id: Identifier, value: Value) -> EvalResult<()>
Set/add a named local value to current locals.
Source§fn get_local_value(&self, id: &Identifier) -> EvalResult<Value>
fn get_local_value(&self, id: &Identifier) -> EvalResult<Value>
Get a named local value from locals.
Source§fn open(&mut self, frame: StackFrame)
fn open(&mut self, frame: StackFrame)
Don’t use this function directly.
Source§fn fetch(&self, id: &Identifier) -> EvalResult<Symbol>
fn fetch(&self, id: &Identifier) -> EvalResult<Symbol>
Fetch a local variable from current stack frame.
Source§fn get_model(&self) -> EvalResult<Model>
fn get_model(&self) -> EvalResult<Model>
Get a property value from current model.
Source§fn current_name(&self) -> QualifiedName
fn current_name(&self) -> QualifiedName
Return qualified name of current module or workbench.
Source§impl Lookup for SymbolTable
impl Lookup for SymbolTable
Source§fn lookup(&mut self, name: &QualifiedName) -> EvalResult<Symbol>
fn lookup(&mut self, name: &QualifiedName) -> EvalResult<Symbol>
Lookup for local or global symbol by qualified name. Read more
Source§impl UseSymbol for SymbolTable
impl UseSymbol for SymbolTable
Source§fn use_symbol(
&mut self,
visibility: Visibility,
name: &QualifiedName,
id: Option<Identifier>,
within: &QualifiedName,
) -> EvalResult<Symbol>
fn use_symbol( &mut self, visibility: Visibility, name: &QualifiedName, id: Option<Identifier>, within: &QualifiedName, ) -> EvalResult<Symbol>
Find a symbol in the symbol table and copy it to the locals. Read more
Source§fn use_symbols_of(
&mut self,
visibility: Visibility,
name: &QualifiedName,
within: &QualifiedName,
) -> EvalResult<Symbol>
fn use_symbols_of( &mut self, visibility: Visibility, name: &QualifiedName, within: &QualifiedName, ) -> EvalResult<Symbol>
Find a symbol in the symbol table and copy all it’s children to the locals and the target. Read more
Auto Trait Implementations§
impl Freeze for SymbolTable
impl !RefUnwindSafe for SymbolTable
impl !Send for SymbolTable
impl !Sync for SymbolTable
impl Unpin for SymbolTable
impl !UnwindSafe for SymbolTable
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
Fallible version of
ToCompactString::to_compact_string()
Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
Converts the given value to a
CompactString
. Read more