MacroLexer

Struct MacroLexer 

Source
pub struct MacroLexer<LB, U>
where LB: LexerBase, U: Clone,
{ /* private fields */ }
Expand description

The macro lexer interprets and evaluates assignment statements and expressions.

Implementations§

Source§

impl<LB, U> MacroLexer<LB, U>
where LB: LexerBase, U: Clone,

Source

pub fn new(base_lexer: LB, user_object: &U) -> Self

Creates a new macro lexer, given an original base lexer. This will interpret all tokens necessary for macro interpretation and expansion, and result into tokens specific for the user of this lexer.

Source

pub fn symbol_table(&self) -> HashSet<Symbol>

Retrieves the symbol table to be used apart from the Macro Lexer

Source

pub fn add_fn( &mut self, name: &str, func: fn(Vec<String>, &str, usize, usize, &U) -> Result<Vec<Lexicon>, String>, )

Adds a macro function to be able to be called by the interpreter

Trait Implementations§

Source§

impl<LB, U> LexerBase for MacroLexer<LB, U>
where LB: LexerBase, U: Clone,

Source§

fn next_token(&mut self) -> Token

Goes forward to the next token in the stream, if available.
Source§

fn current_stream(&self) -> Option<String>

Returns the current stream’s name, if any (for example, the normal lexer does know this value)

Auto Trait Implementations§

§

impl<LB, U> Freeze for MacroLexer<LB, U>
where LB: Freeze, U: Freeze,

§

impl<LB, U> RefUnwindSafe for MacroLexer<LB, U>

§

impl<LB, U> Send for MacroLexer<LB, U>
where LB: Send, U: Send,

§

impl<LB, U> Sync for MacroLexer<LB, U>
where LB: Sync, U: Sync,

§

impl<LB, U> Unpin for MacroLexer<LB, U>
where LB: Unpin, U: Unpin,

§

impl<LB, U> UnwindSafe for MacroLexer<LB, U>
where LB: UnwindSafe, U: UnwindSafe,

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Error = Infallible

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

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

Performs the conversion.
Source§

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

Source§

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

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

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

Performs the conversion.