#[non_exhaustive]
pub enum TokenType {
    Eof,
    Identifier {
        identifier: ShortString,
    },
    MultiLineComment {
        blocks: usize,
        comment: ShortString,
    },
    Number {
        text: ShortString,
    },
    Shebang {
        line: ShortString,
    },
    SingleLineComment {
        comment: ShortString,
    },
    StringLiteral {
        literal: ShortString,
        multi_line: Option<usize>,
        quote_type: StringLiteralQuoteType,
    },
    Symbol {
        symbol: Symbol,
    },
    Whitespace {
        characters: ShortString,
    },
}
Expand description

The type of tokens in parsed code

Variants (Non-exhaustive)

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.

Eof

End of file, should always be the very last token

Identifier

Fields

identifier: ShortString

The identifier itself

An identifier, such as foo

MultiLineComment

Fields

blocks: usize

Number of equals signs, if any, for the multi line comment For example, --[=[ would have a blocks value of 1

comment: ShortString

The comment itself, ignoring opening and closing tags

A multi line comment in the format of --[[ comment ]]

Number

Fields

text: ShortString

The text representing the number, includes details such as 0x

A literal number, such as 3.3

Shebang

Fields

line: ShortString

The shebang line itself

A shebang line

SingleLineComment

Fields

comment: ShortString

The comment, ignoring initial --

A single line comment, such as -- comment

StringLiteral

Fields

literal: ShortString

The literal itself, ignoring quotation marks

multi_line: Option<usize>

Number of equals signs used for a multi line string, if it is one For example, [=[string]=] would have a multi_line value of Some(1) [[string]] would have a multi_line value of Some(0) A string such as "string" would have a multi_line value of None

quote_type: StringLiteralQuoteType

The type of quotation mark used to make the string

A literal string, such as “Hello, world”

Symbol

Fields

symbol: Symbol

The symbol itself

A Symbol, such as local or +

Whitespace

Fields

characters: ShortString

Characters consisting of the whitespace

Whitespace, such as tabs or new lines

Implementations

Returns whether a token can be practically ignored in most cases Comments and whitespace will return true, everything else will return false

Returns the kind of the token type.

use full_moon::{ShortString, tokenizer::{TokenKind, TokenType}};

assert_eq!(
    TokenType::Identifier {
        identifier: ShortString::new("hello")
    }.kind(),
    TokenKind::Identifier,
);

Returns a whitespace TokenType consisting of spaces

Returns a whitespace TokenType consisting of tabs

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

Performs the conversion.

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.