utterance 0.1.4

A parser library for creating readable, natural-language-inspired domain-specific languages.
Documentation
use crate::lexer::{Number, TokenKind, symbol::Symbol};

#[derive(Debug, PartialEq, Clone)]
pub enum TokenType<'a> {
    Word(&'a str),
    Number(Number),

    Symbol(Symbol),
    DoubleSymbol(Symbol),

    Newline,
    End,
}

impl<'a> TokenType<'a> {
    pub fn kind(&self) -> TokenKind {
        match self {
            TokenType::Word(_) => TokenKind::Word,
            TokenType::Number(_) => TokenKind::Number,

            TokenType::Symbol(_) => TokenKind::Symbol,
            TokenType::DoubleSymbol(_) => TokenKind::DoubleSymbol,

            TokenType::Newline => TokenKind::Newline,
            TokenType::End => TokenKind::End,
        }
    }
}