SemanticAnalyzer

Struct SemanticAnalyzer 

Source
pub struct SemanticAnalyzer<'a> { /* private fields */ }
Expand description

The semantic analyzer, responsible for validating the parsed program.

The analyzer checks the program against the command registry to ensure that commands exist, arguments are correct, and types match.

Implementations§

Source§

impl<'a> SemanticAnalyzer<'a>

Source

pub fn new( instructions: &'a [GenericInstruction], registry: &'a CommandRegistry, ) -> Self

Creates a new SemanticAnalyzer.

Source

pub fn analyze(&self) -> Result<Vec<VerifiedCommand>, Error>

Analyzes the program and returns a list of verified commands or an error.

This is the main entry point for semantic analysis, processing each statement in the program.

§Errors

Returns an error if any command is not found, if arguments are invalid, or if any other semantic rule is violated.

Auto Trait Implementations§

§

impl<'a> Freeze for SemanticAnalyzer<'a>

§

impl<'a> !RefUnwindSafe for SemanticAnalyzer<'a>

§

impl<'a> Send for SemanticAnalyzer<'a>

§

impl<'a> Sync for SemanticAnalyzer<'a>

§

impl<'a> Unpin for SemanticAnalyzer<'a>

§

impl<'a> !UnwindSafe for SemanticAnalyzer<'a>

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<C, E> EntryToVal<C> for E
where C: Collection<Entry = E>,

Source§

type Val = <C as Collection>::Val

The type of values stored in the collection. This might be distinct from Entry in complex collections. For example, in a HashMap, while Entry might be a ( key, value ) tuple, Val might only be the value part.
Source§

fn entry_to_val(self) -> <E as EntryToVal<C>>::Val

Converts an entry into a value representation specific to the type of collection. This conversion is crucial for handling operations on entries, especially when they need to be treated or accessed as individual values, such as retrieving the value part from a key-value pair in a hash map.
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<C, Val> ValToEntry<C> for Val
where C: CollectionValToEntry<Val>,

Source§

fn val_to_entry(self) -> <C as CollectionValToEntry<Val>>::Entry

Invokes the val_to_entry function of the CollectionValToEntry trait to convert the value to an entry.

Source§

type Entry = <C as CollectionValToEntry<Val>>::Entry

Represents the type of entry that corresponds to the value within the collection. Type Entry is defined by the Collection trait.
Source§

impl<T> ErasedDestructor for T
where T: 'static,