Files
brolang/compiler/token/token.odin
T
2026-06-25 23:06:13 +02:00

115 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_Undefined,
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_Float,
Keyword_Range,
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,
}