55 lines
922 B
C
55 lines
922 B
C
|
/*
|
||
|
* 4coder token types
|
||
|
*/
|
||
|
|
||
|
// TOP
|
||
|
|
||
|
#if !defined(FCODER_TOKEN_H)
|
||
|
#define FCODER_TOKEN_H
|
||
|
|
||
|
typedef i16 Token_Base_Kind;
|
||
|
enum{
|
||
|
TokenBaseKind_EOF,
|
||
|
TokenBaseKind_Whitespace,
|
||
|
TokenBaseKind_LexError,
|
||
|
TokenBaseKind_Comment,
|
||
|
TokenBaseKind_Keyword,
|
||
|
TokenBaseKind_Preprocessor,
|
||
|
TokenBaseKind_Identifier,
|
||
|
TokenBaseKind_Operator,
|
||
|
TokenBaseKind_LiteralInteger,
|
||
|
TokenBaseKind_LiteralFloat,
|
||
|
TokenBaseKind_LiteralString,
|
||
|
TokenBaseKind_ScopeOpen,
|
||
|
TokenBaseKind_ScopeClose,
|
||
|
TokenBaseKind_ParentheticalOpen,
|
||
|
TokenBaseKind_ParentheticalClose,
|
||
|
|
||
|
TokenBaseKind_COUNT,
|
||
|
};
|
||
|
|
||
|
typedef u16 Token_Base_Flag;
|
||
|
enum{
|
||
|
TokenBaseFlag_PreprocessorBody = 1,
|
||
|
};
|
||
|
|
||
|
struct Token{
|
||
|
i64 pos;
|
||
|
i64 size;
|
||
|
Token_Base_Kind kind;
|
||
|
Token_Base_Flag flags;
|
||
|
i16 sub_kind;
|
||
|
u16 sub_flags;
|
||
|
};
|
||
|
|
||
|
struct Token_Array{
|
||
|
Token *tokens;
|
||
|
i64 count;
|
||
|
i64 max;
|
||
|
};
|
||
|
|
||
|
#endif
|
||
|
|
||
|
// BOTTOM
|
||
|
|