use crate::datum::{Delim, Prefix};
use crate::span::Span;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Token {
pub kind: TokenKind,
pub span: Span,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum TokenKind {
Whitespace,
LineComment,
BlockComment,
LangLine,
Open(Delim),
Close(Delim),
HashOpen(Delim),
HashTag,
Str,
Char,
Bool(bool),
Atom,
Prefix(Prefix),
Label,
LabelRef,
Unterminated(UnterminatedKind),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum UnterminatedKind {
Str,
PipedSymbol,
BlockComment {
depth: u32,
},
LongString,
BracketString,
CharSet,
Regex,
}