Skip to main content

BaseLexer

Struct BaseLexer 

Source
pub struct BaseLexer<'input, 'arena, Ext, Input, TF>
where Ext: LexerRecog<'input, 'arena, TF, Self> + 'static, Input: CharStream<'input>, TF: TokenFactory<'input, 'arena> + 'arena, 'input: 'arena,
{ pub interpreter: Option<Box<LexerATNSimulator>>, pub input: Option<Input>, pub token_start_char_index: isize, pub token_start_line: u32, pub token_start_column: i32, pub token_type: i32, pub token: Option<&'arena mut TF::Tok>, pub channel: i32, pub mode_stack: Vec<usize>, pub mode: usize, pub text: Option<String>, /* private fields */ }
Expand description

Default implementation of Lexer

Public fields in this struct are intended to be used by embedded actions

Fields§

§interpreter: Option<Box<LexerATNSimulator>>

LexerATNSimulator instance of this lexer

§input: Option<Input>

CharStream used by this lexer

§token_start_char_index: isize§token_start_line: u32§token_start_column: i32§token_type: i32

Overrides token type emitted by lexer for current token

§token: Option<&'arena mut TF::Tok>

Make it Some to override token that is currently being generated by lexer

§channel: i32

Channel lexer is currently assigning tokens to

§mode_stack: Vec<usize>

stack of modes, which is used for pushMode,popMode lexer actions

§mode: usize

Mode lexer is currently in

§text: Option<String>

Make it Some to override text for token that is currently being generated by lexer

Implementations§

Source§

impl<'input, 'arena, Ext, Input, TF> BaseLexer<'input, 'arena, Ext, Input, TF>
where Ext: LexerRecog<'input, 'arena, TF, Self> + 'static, Input: CharStream<'input>, TF: TokenFactory<'input, 'arena> + 'arena, 'input: 'arena,

Source

pub fn get_char_index(&self) -> isize

Current position in input stream

Source

pub fn get_text<'a>(&'a self) -> Cow<'a, str>
where 'input: 'a,

Current token text

Source

pub fn set_text(&mut self, _text: impl Into<String>)

Used from lexer actions to override text of the token that will be emitted next

Source

pub fn add_error_listener( &mut self, listener: Box<dyn ErrorListener<'input, 'arena, Self>>, )

Add error listener

Source

pub fn remove_error_listeners(&mut self)

Remove and drop all error listeners

Source

pub fn new_base_lexer(input: Input, recog: Ext, factory: TF) -> Self

Creates new lexer instance

Trait Implementations§

Source§

impl<'input, 'arena, Ext, Input, TF> Deref for BaseLexer<'input, 'arena, Ext, Input, TF>
where Ext: LexerRecog<'input, 'arena, TF, Self> + 'static, Input: CharStream<'input>, TF: TokenFactory<'input, 'arena> + 'arena,

Source§

type Target = Ext

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl<'input, 'arena, Ext, Input, TF> DerefMut for BaseLexer<'input, 'arena, Ext, Input, TF>
where Ext: LexerRecog<'input, 'arena, TF, Self> + 'static, Input: CharStream<'input>, TF: TokenFactory<'input, 'arena> + 'arena,

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
Source§

impl<'input, 'arena, L, Input, TF> Lexer<'input, 'arena, Input, TF> for BaseLexer<'input, 'arena, L, Input, TF>
where L: LexerRecog<'input, 'arena, TF, Self> + 'static, Input: CharStream<'input>, TF: TokenFactory<'input, 'arena> + 'arena, 'input: 'arena,

Source§

fn input(&mut self) -> &mut Input

Same as TokenStream::get_input_stream but returns concrete type instance important for proper inlining in hot code of LexerATNSimulator
Source§

fn set_channel(&mut self, v: i32)

Sets channel where current token will be pushed Read more
Source§

fn push_mode(&mut self, m: usize)

Pushes current mode to internal mode stack and sets m as current lexer mode `pop_mode should be used to recover previous mode
Source§

fn pop_mode(&mut self) -> Option<usize>

Pops mode from internal mode stack
Source§

fn set_type(&mut self, t: i32)

Sets type of the current token Called from action to override token that will be emitted by lexer
Source§

fn set_mode(&mut self, m: usize)

Sets lexer mode discarding current one
Source§

fn more(&mut self)

Used to informs lexer that it should consider next token as a continuation of the current one
Source§

fn skip(&mut self)

Tells lexer to completely ignore and not emit current token.
Source§

impl<'input, 'arena, L, Input, TF> TokenSource<'input, 'arena, TF> for BaseLexer<'input, 'arena, L, Input, TF>
where L: LexerRecog<'input, 'arena, TF, Self> + 'static, Input: CharStream<'input>, TF: TokenFactory<'input, 'arena> + 'arena, 'input: 'arena,

Source§

fn next_token(&mut self) -> &'arena mut TF::Tok

Return a {@link Token} object from your input stream (usually a {@link CharStream}). Do not fail/return upon lexing error; keep chewing on the characters until you get a good one; errors are not passed through to the parser.
Source§

fn get_line(&self) -> u32

Get the line number for the current position in the input stream. The first line in the input is line 1. Read more
Source§

fn get_char_position_in_line(&self) -> i32

Get the index into the current line for the current position in the input stream. The first character on a line has position 0. Read more
Source§

fn get_input_stream(&mut self) -> Option<&mut dyn IntStream>

Returns underlying input stream
Source§

fn get_source_name(&self) -> String

Returns string identifier of underlying input e.g. file name
Source§

fn get_token_factory(&self) -> &TF

Gets the TokenFactory this token source is currently using for creating Token objects from the input. Read more
Source§

fn get_dfa_string(&self) -> String

Auto Trait Implementations§

§

impl<'input, 'arena, Ext, Input, TF> Freeze for BaseLexer<'input, 'arena, Ext, Input, TF>
where Ext: Freeze, TF: Freeze, Input: Freeze,

§

impl<'input, 'arena, Ext, Input, TF> !RefUnwindSafe for BaseLexer<'input, 'arena, Ext, Input, TF>

§

impl<'input, 'arena, Ext, Input, TF> !Send for BaseLexer<'input, 'arena, Ext, Input, TF>

§

impl<'input, 'arena, Ext, Input, TF> !Sync for BaseLexer<'input, 'arena, Ext, Input, TF>

§

impl<'input, 'arena, Ext, Input, TF> Unpin for BaseLexer<'input, 'arena, Ext, Input, TF>
where Ext: Unpin, TF: Unpin, Input: Unpin,

§

impl<'input, 'arena, Ext, Input, TF> !UnwindSafe for BaseLexer<'input, 'arena, Ext, Input, TF>

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<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
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.