Revert "remove parse-display"

This reverts commit 4b0e00cf99.
This commit is contained in:
Robin Appelman 2022-01-19 15:59:51 +01:00
commit 274af4f920
2 changed files with 18 additions and 24 deletions

View file

@ -14,6 +14,7 @@ thiserror = "1"
memchr = "2" memchr = "2"
serde = "1" serde = "1"
miette = "3" miette = "3"
parse-display = "0.5"
[dev-dependencies] [dev-dependencies]
maplit = "1" maplit = "1"

View file

@ -1,63 +1,56 @@
use logos::{Lexer, Logos, Span}; use logos::{Lexer, Logos, Span};
use std::fmt::{Debug, Display, Formatter}; use parse_display::Display;
use std::fmt::{Debug, Formatter};
#[derive(Logos, Debug, PartialEq, Clone, Copy)] #[derive(Logos, Debug, PartialEq, Clone, Copy, Display)]
pub enum Token { pub enum Token {
#[token("array")] #[token("array")]
#[display("'array'")]
Array, Array,
#[regex("(?i:true|false)")] #[regex("(?i:true|false)")]
#[display("boolean literal")]
Bool, Bool,
#[token("null")] #[token("null")]
#[display("'null'")]
Null, Null,
#[token("=>")] #[token("=>")]
#[display("'=>'")]
Arrow, Arrow,
#[token("(")] #[token("(")]
#[display("'('")]
BracketOpen, BracketOpen,
#[token(")")] #[token(")")]
#[display("')'")]
BracketClose, BracketClose,
#[token("[")] #[token("[")]
#[display("'['")]
SquareOpen, SquareOpen,
#[token("]")] #[token("]")]
#[display("']'")]
SquareClose, SquareClose,
#[token(",")] #[token(",")]
#[display("','")]
Comma, Comma,
#[display("string literal")]
#[regex("(\"([^\"\\\\]|\\\\.)*\")|(\'([^\'\\\\]|\\\\.)*\')")] #[regex("(\"([^\"\\\\]|\\\\.)*\")|(\'([^\'\\\\]|\\\\.)*\')")]
LiteralString, LiteralString,
#[display("float literal")]
#[regex("-?((([0-9]+(_[0-9]+)*|([0-9]*(_[0-9]+)*[\\.][0-9]+(_[0-9]+)*)|([0-9]+(_[0-9]+)*[\\.][0-9]*(_[0-9]+)*)))[eE][+-]?[0-9]+(_[0-9]+)*|([0-9]*(_[0-9]+)*[\\.][0-9]+(_[0-9]+)*)|([0-9]+(_[0-9]+)*[\\.][0-9]*(_[0-9]+)*))")] #[regex("-?((([0-9]+(_[0-9]+)*|([0-9]*(_[0-9]+)*[\\.][0-9]+(_[0-9]+)*)|([0-9]+(_[0-9]+)*[\\.][0-9]*(_[0-9]+)*)))[eE][+-]?[0-9]+(_[0-9]+)*|([0-9]*(_[0-9]+)*[\\.][0-9]+(_[0-9]+)*)|([0-9]+(_[0-9]+)*[\\.][0-9]*(_[0-9]+)*))")]
Float, Float,
#[display("integer literal")]
#[regex("-?(0|[1-9][0-9]*(_[0-9]+)*|0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*|0[0-7]+(_[0-7]+)*|0[bB][01]+(_[01]+)*)")] #[regex("-?(0|[1-9][0-9]*(_[0-9]+)*|0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*|0[0-7]+(_[0-7]+)*|0[bB][01]+(_[01]+)*)")]
Integer, Integer,
#[token(";")] #[token(";")]
#[display("';'")]
SemiColon, SemiColon,
#[error] #[error]
#[regex(r"(#|//)[^\n]*", logos::skip)] #[regex(r"(#|//)[^\n]*", logos::skip)]
#[regex(r"/\*([^*]|\*[^/])+\*/", logos::skip)] #[regex(r"/\*([^*]|\*[^/])+\*/", logos::skip)]
#[regex(r"[ \t\n\f]+", logos::skip)] #[regex(r"[ \t\n\f]+", logos::skip)]
#[display("error")]
Error, Error,
} }
impl Display for Token {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let str = match self {
Token::Array => "'array'",
Token::Bool => "boolean literal",
Token::Null => "'null'",
Token::Arrow => "'=>'",
Token::BracketOpen => "'('",
Token::BracketClose => "')'",
Token::SquareOpen => "'['",
Token::SquareClose => "']'",
Token::Comma => "','",
Token::LiteralString => "string literal",
Token::Float => "float literal",
Token::Integer => "integer literal",
Token::SemiColon => "';'",
Token::Error => "error",
};
write!(f, "{}", str)
}
}
#[test] #[test]
fn test_lex() { fn test_lex() {
let source = r###" let source = r###"