#[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Token<'a> { Ident(Ident<'a>), Punct(Punct), Literal(Literal<'a>), } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct Ident<'a>(pub &'a str); #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct Punct(pub char, pub Spacing); #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum Spacing { Alone, Joint, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub struct Literal<'a> { pub content: &'a str, pub kind: LiteralKind, } #[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum LiteralKind { Number, String, RawString, ScriptString, }