Skip to main content

TokenKind

Enum TokenKind 

Source
pub enum TokenKind {
Show 74 variants Int(i64), Float(f64), Byte(u8), Str(String), StrStart(String), StrMid(String), StrEnd(String), InterpStart, InterpEnd, Ident(String), Fn, Let, Mut, If, Else, While, For, In, Return, Break, Continue, Defer, Match, Struct, Enum, Interface, Comptime, Is, Pure, Io, Alloc, Panic, Or, SelfKw, True, False, I64Ty, F64Ty, BoolTy, StrTy, ByteTy, VoidTy, Plus, Minus, Star, Slash, Percent, EqEq, BangEq, Lt, LtEq, Gt, GtEq, AmpAmp, PipePipe, Bang, Eq, Dot, Comma, Colon, Semi, LParen, RParen, LBracket, RBracket, LBrace, RBrace, Arrow, FatArrow, PipeGt, Question, DotDot, DotDotEq, Eof,
}
Expand description

what a token is. literals and identifiers carry their decoded value; every keyword, every operator, every piece of punctuation, and end of file are nullary variants.

PartialEq but not Eq, because TokenKind::Float holds an f64 and f64 is not Eq. that is fine; nothing needs TokenKind: Eq.

Variants§

§

Int(i64)

an integer literal, already parsed (decimal, 0x, or 0b; underscores stripped). stored as the non-negative magnitude; a leading - is a separate token the parser folds in.

§

Float(f64)

a float literal, already parsed (underscores stripped, exponent applied).

§

Byte(u8)

a byte literal b'X', the single byte it denotes.

§

Str(String)

a string literal with no interpolation, escapes already decoded.

§

StrStart(String)

the decoded text before the first interpolation in a string with interpolations (may be empty). followed by an TokenKind::InterpStart.

§

StrMid(String)

the decoded text between one interpolation’s } and the next one’s { (may be empty). sits between an TokenKind::InterpEnd and an TokenKind::InterpStart.

§

StrEnd(String)

the decoded text after the last interpolation in a string (may be empty). follows an TokenKind::InterpEnd and closes the string.

§

InterpStart

opens an embedded interpolation expression. between this and the matching TokenKind::InterpEnd the lexer emits ordinary tokens, so any expression (including a nested string) works inside { ... }.

§

InterpEnd

closes the interpolation expression opened by TokenKind::InterpStart.

§

Ident(String)

an identifier: ASCII [A-Za-z_][A-Za-z0-9_]* that is not a keyword.

§

Fn

§

Let

§

Mut

§

If

§

Else

§

While

§

For

§

In

§

Return

§

Break

§

Continue

§

Defer

§

Match

§

Struct

§

Enum

§

Interface

§

Comptime

§

Is

§

Pure

§

Io

§

Alloc

§

Panic

§

Or

§

SelfKw

the self keyword. named SelfKw because Self and self are reserved in Rust and cannot be used as identifiers here.

§

True

the boolean literal true. lexed as a keyword, not an identifier.

§

False

the boolean literal false. lexed as a keyword, not an identifier.

§

I64Ty

the primitive type name i64.

§

F64Ty

the primitive type name f64.

§

BoolTy

the primitive type name bool.

§

StrTy

the primitive type name str.

§

ByteTy

the primitive type name byte.

§

VoidTy

the primitive type name void.

§

Plus

+

§

Minus

-

§

Star

*

§

Slash

/

§

Percent

%

§

EqEq

==

§

BangEq

!=

§

Lt

<

§

LtEq

<=

§

Gt

>

§

GtEq

>=

§

AmpAmp

&&

§

PipePipe

||

§

Bang

!

§

Eq

=

§

Dot

.

§

Comma

,

§

Colon

:

§

Semi

;

§

LParen

(

§

RParen

)

§

LBracket

[

§

RBracket

]

§

LBrace

{

§

RBrace

}

§

Arrow

-> (return-type arrow)

§

FatArrow

=> (match-arm arrow)

§

PipeGt

|> (pipeline)

§

Question

? (postfix error propagation)

§

DotDot

.. (exclusive range)

§

DotDotEq

..= (inclusive range)

§

Eof

end of the token stream.

Trait Implementations§

Source§

impl Clone for TokenKind

Source§

fn clone(&self) -> TokenKind

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TokenKind

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for TokenKind

Source§

fn eq(&self, other: &TokenKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for TokenKind

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more