4coder/4coder_token.h

55 lines
922 B
C
Raw Normal View History

2019-09-04 18:26:51 +00:00
/*
* 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