112 lines
1.5 KiB
Odin
112 lines
1.5 KiB
Odin
package token
|
|
|
|
import "../source"
|
|
import "../symbol"
|
|
|
|
Kind :: enum u8 {
|
|
Invalid,
|
|
Eof,
|
|
Newline,
|
|
Identifier,
|
|
Integer,
|
|
Float,
|
|
String,
|
|
Character,
|
|
Underscore,
|
|
Colon,
|
|
Colon_Colon,
|
|
Equal,
|
|
Equal_Equal,
|
|
Bang,
|
|
Bang_Equal,
|
|
Less,
|
|
Less_Equal,
|
|
Greater,
|
|
Greater_Equal,
|
|
Plus,
|
|
Minus,
|
|
Slash,
|
|
Plus_Equal,
|
|
Minus_Equal,
|
|
Star_Equal,
|
|
Slash_Equal,
|
|
Dot,
|
|
Range,
|
|
Range_Inclusive,
|
|
Ellipsis,
|
|
At,
|
|
Star,
|
|
Ampersand,
|
|
Caret,
|
|
Question,
|
|
Semicolon,
|
|
Left_Bracket,
|
|
Right_Bracket,
|
|
Left_Paren,
|
|
Right_Paren,
|
|
Left_Brace,
|
|
Right_Brace,
|
|
Comma,
|
|
Pipe,
|
|
Keyword_Func,
|
|
Keyword_C_Func,
|
|
Keyword_Struct,
|
|
Keyword_C_Struct,
|
|
Keyword_Enum,
|
|
Keyword_Distinct,
|
|
Keyword_Alias,
|
|
Keyword_Import,
|
|
Keyword_Return,
|
|
Keyword_Mut,
|
|
Keyword_None,
|
|
Keyword_Orelse,
|
|
Keyword_And,
|
|
Keyword_Or,
|
|
Keyword_If,
|
|
Keyword_While,
|
|
Keyword_For,
|
|
Keyword_Else,
|
|
Keyword_True,
|
|
Keyword_False,
|
|
Keyword_Void,
|
|
Keyword_Bool,
|
|
Keyword_Int,
|
|
Keyword_I8,
|
|
Keyword_I16,
|
|
Keyword_I32,
|
|
Keyword_I64,
|
|
Keyword_U8,
|
|
Keyword_U16,
|
|
Keyword_U32,
|
|
Keyword_U64,
|
|
Keyword_Isize,
|
|
Keyword_Usize,
|
|
Keyword_F32,
|
|
Keyword_F64,
|
|
Keyword_C_Char,
|
|
Keyword_C_Schar,
|
|
Keyword_C_Uchar,
|
|
Keyword_C_Short,
|
|
Keyword_C_Ushort,
|
|
Keyword_C_Int,
|
|
Keyword_C_Uint,
|
|
Keyword_C_Long,
|
|
Keyword_C_Ulong,
|
|
Keyword_C_Longlong,
|
|
Keyword_C_Ulonglong,
|
|
Keyword_C_Float,
|
|
Keyword_C_Double,
|
|
Keyword_C_Longdouble,
|
|
}
|
|
|
|
Token :: struct {
|
|
span: source.Span,
|
|
symbol: symbol.Id,
|
|
diagnostic: source.Diagnostic_Id,
|
|
kind: Kind,
|
|
}
|
|
|
|
Stream :: struct {
|
|
items: [dynamic]Token,
|
|
}
|