use logos::Logos;
#[derive(Logos, Debug, Copy, Clone, PartialEq)]
pub enum JsonToken {
#[token("{")]
OpenCurly,
#[token("}")]
CloseCurly,
#[token("[")]
OpenSquare,
#[token("]")]
CloseSquare,
#[token(":")]
Colon,
#[token(",")]
Comma,
#[token("null")]
Null,
#[token("true")]
True,
#[token("false")]
False,
#[regex(r"-?(0|([1-9][0-9]*))(\.[0-9]+)?([eE][-+]?[0-9]+)?")]
Number,
#[regex("\"((\\\\([\"\\\\/bfnrt]|u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]))|[^\"\\\\\x00-\x1F])*\"")]
String,
#[token("\n")]
Newline,
#[regex("[ \t\r]+", logos::skip)]
Whitespace,
#[error]
Error,
}