Remove unnecessary display from TokenType enum (#1)

This commit is contained in:
Josh Thomas 2024-10-12 15:57:58 -05:00 committed by GitHub
parent b1bb62c086
commit 51e00e7a5d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2,93 +2,43 @@ use std::fmt;
#[derive(Debug, Clone, PartialEq)]
enum TokenType {
// Single-character
LeftParen,
RightParen,
LeftBrace,
RightBrace,
LeftBracket,
RightBracket,
LeftAngle,
RightAngle,
Comma,
Dot,
Minus,
Plus,
Colon,
Semicolon,
Slash,
Star,
Bang,
Equal,
Pipe,
Percent,
Hash,
SingleQuote,
DoubleQuote,
// Multi-character
DoubleLeftBrace,
DoubleRightBrace,
LeftBracePercent,
PercentRightBrace,
LeftBraceHash,
HashRightBrace,
BangEqual,
DoubleEqual,
LeftAngleEqual,
RightAngleEqual,
// Literals
LeftParen, // (
RightParen, // )
LeftBrace, // {
RightBrace, // }
LeftBracket, // [
RightBracket, // ]
LeftAngle, // <
RightAngle, // >
Comma, // ,
Dot, // .
Minus, // -
Plus, // +
Colon, // :
Semicolon, // ;
Slash, // /
Star, // *
Bang, // !
Equal, // =
Pipe, // |
Percent, // %
Hash, // #
SingleQuote, // '
DoubleQuote, // "
DoubleLeftBrace, // {{
DoubleRightBrace, // }}
LeftBracePercent, // {%
PercentRightBrace, // %}
LeftBraceHash, // {#
HashRightBrace, // #}
BangEqual, // !=
DoubleEqual, // ==
LeftAngleEqual, // <=
RightAngleEqual, // =>
Text,
Eof,
}
impl fmt::Display for TokenType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
use TokenType::*;
let s = match self {
LeftParen => "(",
RightParen => ")",
LeftBrace => "{",
RightBrace => "}",
LeftBracket => "[",
RightBracket => "]",
LeftAngle => "<",
RightAngle => ">",
Comma => ",",
Dot => ".",
Minus => "-",
Plus => "+",
Colon => ":",
Semicolon => ";",
Slash => "/",
Star => "*",
Bang => "!",
Equal => "=",
Pipe => "|",
Percent => "%",
Hash => "#",
SingleQuote => "'",
DoubleQuote => "\"",
DoubleLeftBrace => "{{",
DoubleRightBrace => "}}",
LeftBracePercent => "{%",
PercentRightBrace => "%}",
LeftBraceHash => "{#",
HashRightBrace => "#}",
BangEqual => "!=",
DoubleEqual => "==",
LeftAngleEqual => "<=",
RightAngleEqual => ">=",
Text => "text",
Eof => "EOF",
};
write!(f, "{}", s)
}
}
#[derive(Debug, Clone)]
struct Token {
token_type: TokenType,