pub enum TokenId {
Token(Option<Keyword>),
Operator(Operator),
IoNumber,
IoLocation,
EndOfInput,
}
Expand description
Token identifier, or classification of tokens
This enum classifies a token as defined in POSIX XCU 2.10.1 Shell Grammar Lexical Conventions, but does not exactly reflect further distinction defined in POSIX XCU 2.10.2 Shell Grammar Rules.
For convenience, the special token identifier EndOfInput
is included.
Variants§
Token(Option<Keyword>)
TOKEN
If this token looks like a reserved word, this variant has some
associated Keyword
that describes the word. However, it depends on
context whether a token is actually regarded as a reserved word or
just as an ordinary word. You must ensure that you’re in an
applicable context when examining the Keyword
value.
Operator(Operator)
Operator
IoNumber
IO_NUMBER
IoLocation
IO_LOCATION
EndOfInput
Imaginary token identifier for the end of input
Implementations§
Source§impl TokenId
impl TokenId
Sourcepub fn is_clause_delimiter(self) -> bool
pub fn is_clause_delimiter(self) -> bool
Determines if this token can be a delimiter of a clause.
This function delegates to Keyword::is_clause_delimiter
if the token
ID is a (possible) keyword, or to Operator::is_clause_delimiter
if
it is an operator. For EndOfInput
the function returns true.
Otherwise, the result is false.
Trait Implementations§
impl Copy for TokenId
impl Eq for TokenId
impl StructuralPartialEq for TokenId
Auto Trait Implementations§
impl Freeze for TokenId
impl RefUnwindSafe for TokenId
impl Send for TokenId
impl Sync for TokenId
impl Unpin for TokenId
impl UnwindSafe for TokenId
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more