[−][src]Struct lrpar::Lexeme
A Lexeme
represents a segment of the user's input that conforms to a known type. All lexemes
have a starting position in the user's input: lexemes that result from error recovery, however,
do not have a length (or, therefore, an end). This allows us to differentiate between lexemes
that are always of zero length (which are required in some grammars) from lexemes that result
from error recovery (where an error recovery algorithm can know the type that a lexeme should
have been, but can't know what its contents should have been).
Methods
impl<StorageT: Copy> Lexeme<StorageT>
[src]
pub fn new(tok_id: StorageT, start: usize, len: Option<usize>) -> Self
[src]
Create a new token with ID tok_id
and a starting position in the input start
. If the
token is the result of user input, then Some(n)
should be passed to len
; if the token
is the result of error recovery, then None
should be passed to len
.
pub fn tok_id(&self) -> StorageT
[src]
The token ID.
pub fn start(&self) -> usize
[src]
Byte offset of the start of the lexeme
pub fn end(&self) -> usize
[src]
Byte offset of the end of the lexeme.
Note that if this lexeme was inserted by error recovery, it will end at the same place it started (i.e. `self.start() == self.end()).
pub fn len(&self) -> usize
[src]
Length in bytes of the lexeme. Note that if this lexeme was inserted by error recovery, it will have a length of 0.
pub fn inserted(&self) -> bool
[src]
Returns true
if this lexeme was inserted as the result of error recovery, or false
otherwise.
Trait Implementations
impl<StorageT: Copy> Copy for Lexeme<StorageT>
[src]
impl<StorageT: Clone> Clone for Lexeme<StorageT>
[src]
fn clone(&self) -> Lexeme<StorageT>
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<StorageT: PartialEq> PartialEq<Lexeme<StorageT>> for Lexeme<StorageT>
[src]
fn eq(&self, other: &Lexeme<StorageT>) -> bool
[src]
fn ne(&self, other: &Lexeme<StorageT>) -> bool
[src]
impl<StorageT: Eq> Eq for Lexeme<StorageT>
[src]
impl<StorageT: Hash> Hash for Lexeme<StorageT>
[src]
fn hash<__HStorageT: Hasher>(&self, state: &mut __HStorageT)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
Feeds a slice of this type into the given [Hasher
]. Read more
impl<StorageT: Debug> Debug for Lexeme<StorageT>
[src]
Auto Trait Implementations
impl<StorageT> Send for Lexeme<StorageT> where
StorageT: Send,
StorageT: Send,
impl<StorageT> Sync for Lexeme<StorageT> where
StorageT: Sync,
StorageT: Sync,
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From<T> for T
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
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>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
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>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
fn equivalent(&self, key: &K) -> bool
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
U: TryFrom<T>,