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
Symbolresolved from the initial source file. - A [
SourceCache] of all loaded source files (accessible by qualified name, file path and source hash). - A
StackofStackFrames. - A
SymbolMapof all global symbols.
All these internal structures can be accessed by several implemented traits.
Fields§
§root: SymbolSymbol of the initial source file.
stack: StackStack of currently opened scopes with symbols while evaluation.
symbols: SymbolMapGlobal symbols (including root).
diag_handler: DiagHandlerSource 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