Struct BaseLexer

Source
pub struct BaseLexer<'input, T: LexerRecog<'input, Self> + 'static, Input: CharStream<TF::From>, TF: TokenFactory<'input> = CommonTokenFactory> {
    pub interpreter: Option<Box<LexerATNSimulator>>,
    pub input: Option<Input>,
    pub token_start_char_index: isize,
    pub token_start_line: isize,
    pub token_start_column: isize,
    pub token_type: isize,
    pub token: Option<TF::Tok>,
    pub channel: isize,
    pub mode: usize,
    pub text: Option<<TF::Data as ToOwned>::Owned>,
    /* 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: isize§token_start_column: isize§token_type: isize

Overrides token type emitted by lexer for current token

§token: Option<TF::Tok>

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

§channel: isize

Channel lexer is currently assigning tokens to

§mode: usize

Mode lexer is currently in

§text: Option<<TF::Data as ToOwned>::Owned>

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

Implementations§

Source§

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

Source

pub fn get_char_index(&self) -> isize

Current position in input stream

Source

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

Current token text

Source

pub fn set_text(&mut self, _text: <TF::Data as ToOwned>::Owned)

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, 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, interpreter: LexerATNSimulator, recog: T, factory: &'input TF, ) -> Self

Creates new lexer instance

Trait Implementations§

Source§

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

Source§

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

Mutably dereferences the value.
Source§

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

Source§

type Input = Input

Concrete input stream used by this parser
Source§

fn input(&mut self) -> &mut Self::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: isize)

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: isize)

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, T, Input, TF> TokenSource<'input> for BaseLexer<'input, T, Input, TF>
where T: LexerRecog<'input, Self> + 'static, Input: CharStream<TF::From>, TF: TokenFactory<'input>,

Source§

type TF = TF

TokenFactory this token source produce tokens with
Source§

fn next_token(&mut self) -> <Self::TF as TokenFactory<'input>>::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) -> isize

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) -> isize

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) -> &'input TF

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

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

Source§

type Target = T

The resulting type after dereferencing.
Source§

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

Dereferences the value.

Auto Trait Implementations§

§

impl<'input, T, Input, TF = CommonTokenFactory> !Freeze for BaseLexer<'input, T, Input, TF>

§

impl<'input, T, Input, TF = CommonTokenFactory> !RefUnwindSafe for BaseLexer<'input, T, Input, TF>

§

impl<'input, T, Input, TF = CommonTokenFactory> !Send for BaseLexer<'input, T, Input, TF>

§

impl<'input, T, Input, TF = CommonTokenFactory> !Sync for BaseLexer<'input, T, Input, TF>

§

impl<'input, T, Input, TF> Unpin for BaseLexer<'input, T, Input, TF>
where T: Unpin, Input: Unpin, <TF as TokenFactory<'input>>::Tok: Unpin, <<TF as TokenFactory<'input>>::Data as ToOwned>::Owned: Unpin,

§

impl<'input, T, Input, TF = CommonTokenFactory> !UnwindSafe for BaseLexer<'input, T, 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> AnyExt for T
where T: Any + ?Sized,

Source§

fn downcast_ref<T>(this: &Self) -> Option<&T>
where T: Any,

Attempts to downcast this to T behind reference
Source§

fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>
where T: Any,

Attempts to downcast this to T behind mutable reference
Source§

fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>
where T: Any,

Attempts to downcast this to T behind Rc pointer
Source§

fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>
where T: Any,

Attempts to downcast this to T behind Arc pointer
Source§

fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>
where T: Any,

Attempts to downcast this to T behind Box pointer
Source§

fn downcast_move<T>(this: Self) -> Option<T>
where T: Any, Self: Sized,

Attempts to downcast owned Self to T, useful only in generic context as a workaround for specialization
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, X> CoerceTo<T> for X
where T: CoerceFrom<X> + ?Sized,

Source§

fn coerce_rc_to(self: Rc<X>) -> Rc<T>

Source§

fn coerce_box_to(self: Box<X>) -> Box<T>

Source§

fn coerce_ref_to(&self) -> &T

Source§

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

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.