#ifndef WONKY_TOKEN_HH
#define WONKY_TOKEN_HH WONKY_TOKEN_HH
struct token;
struct identifier;
struct token_identifier;
struct token_keyword;
struct token_punctuator;
struct token_constant;
struct token_string;
struct token_include_directive;
struct token_if_directive;
struct token_ifdefndef_directive;
struct token_normal_define_directive;
struct token_functionlike_define_directive;
struct token_functionlike_define_argument;
struct token_undef_directive;
struct token_line_directive;
struct token_error_directive;
struct token_pragma_directive;
struct token_defined_unary_operator;
struct token_hashtag_unary_operator;
struct token_hashtag_hastag_operator;
struct token_error;
enum Punctuator_Token_Type
{
PUNCTUATOR_NORMAL,
PUNCTUATOR_DIGRAPH,
PUNCTUATOR_TRIGRAPH,
PUNCTUATOR_TYPE_END
};
enum Constant_Token_Encoding
{
CONSTANT_TOKEN_HEXADECIMAL,
CONSTANT_TOKEN_DECIMAL,
CONSTANT_TOKEN_OCTAL,
CONSTANT_TOKEN_TYPE_END
};
enum Constant_Token_Specifier
{
CONSTANT_TOKEN_SPECIFIER_NONE,
CONSTANT_TOKEN_SPECIFIER_LONG,
CONSTANT_TOKEN_SPECIFIER_LONG_LONG,
CONSTANT_TOKEN_SPECIFIER_END
};
enum Constant_Token_Signedness
{
CONSTANT_TOKEN_SIGNED,
CONSTANT_TOKEN_UNSIGNED,
CONSTANT_TOKEN_SIGNEDNESS_END
};
enum String_Token_Type
{
STRING_TOKEN_NORMAL,
STRING_TOKEN_WIDE,
STRING_TOKEN_TYPE_END
};
enum Pragma_Type
{
PRAGMA_TYPE_END
};
#endif