#[derive(Debug, Clone, PartialEq)]
pub enum TokenKind {
IntLiteral(i64),
LongLiteral(i64),
UIntLiteral(u64),
ULongLiteral(u64),
DoubleLiteral(f64),
FloatLiteral(f32),
CharLiteral(i8),
StringLiteral(String),
Identifier(String),
KwInt,
KwVoid,
KwReturn,
KwIf,
KwElse,
KwWhile,
KwDo,
KwFor,
KwBreak,
KwContinue,
KwStatic,
KwExtern,
KwLong,
KwUnsigned,
KwSigned,
KwDouble,
KwFloat,
KwSizeof,
KwChar,
KwStruct,
KwUnion,
KwTypedef,
KwEnum,
KwSwitch,
KwCase,
KwDefault,
KwGoto,
KwShort,
KwConst,
KwVolatile,
KwRestrict,
KwInline,
KwNoreturn,
Minus,
Tilde,
Bang,
Plus,
Star,
Slash,
Percent,
Less,
LessEqual,
Greater,
GreaterEqual,
EqualEqual,
NotEqual,
Ampersand,
AndAnd,
OrOr,
Pipe,
Caret,
ShiftLeft,
ShiftRight,
AmpersandAssign,
PipeAssign,
CaretAssign,
ShiftLeftAssign,
ShiftRightAssign,
Assign,
Question,
Colon,
PlusAssign,
MinusAssign,
StarAssign,
SlashAssign,
PercentAssign,
PlusPlus,
MinusMinus,
Comma,
OpenParen,
CloseParen,
OpenBrace,
CloseBrace,
Semicolon,
OpenBracket,
CloseBracket,
Dot,
Arrow,
Ellipsis,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Span {
pub offset: usize,
pub len: usize,
pub line: usize,
pub column: usize,
}
#[derive(Debug, Clone, PartialEq)]
pub struct Token {
pub kind: TokenKind,
pub span: Span,
}