#ifndef WONKY_AUTOMATA_HH
#define WONKY_AUTOMATA_HH WONKY_AUTOMATA_HH
enum Automata_Action
{
AUTOMATA_ACTION_DISPENSE_TOKEN,
AUTOMATA_ACTION_NO_ACTION,
};
enum Source_Chars
{
CHAR_NONE=0,/*0 is used in initialisors so don't change this*/
CHAR_A,
CHAR_B,
CHAR_C,
CHAR_D,
CHAR_E,
CHAR_F,
CHAR_G,
CHAR_H,
CHAR_I,
CHAR_J,
CHAR_K,
CHAR_L,
CHAR_M,
CHAR_N,
CHAR_O,
CHAR_P,
CHAR_Q,
CHAR_R,
CHAR_S,
CHAR_T,
CHAR_U,
CHAR_V,
CHAR_W,
CHAR_X,
CHAR_Y,
CHAR_Z,
CHAR_a,
CHAR_b,
CHAR_c,
CHAR_d,
CHAR_e,
CHAR_f,
CHAR_g,
CHAR_h,
CHAR_i,
CHAR_j,
CHAR_k,
CHAR_l,
CHAR_m,
CHAR_n,
CHAR_o,
CHAR_p,
CHAR_q,
CHAR_r,
CHAR_s,
CHAR_t,
CHAR_u,
CHAR_v,
CHAR_w,
CHAR_x,
CHAR_y,
CHAR_z,
CHAR_0,
CHAR_1,
CHAR_2,
CHAR_3,
CHAR_4,
CHAR_5,
CHAR_6,
CHAR_7,
CHAR_8,
CHAR_9,
CHAR_EXCLAMATION,
CHAR_DOUBLE_QUOTE,
CHAR_HASHTAG,
CHAR_PERCENT,
CHAR_AMPERSANT,
CHAR_SINGLE_QUOTE,
CHAR_OPEN_NORMAL,
CHAR_CLOSE_NORMAL,
CHAR_STAR,
CHAR_PLUS,
CHAR_COMMA,
CHAR_MINUS,
CHAR_DOT,
CHAR_FORWARD_SLASH,
CHAR_COLUMN,
CHAR_SEMI_COLUMN,
CHAR_LESS,
CHAR_EQUAL,
CHAR_GREATER,
CHAR_QUESTION,
CHAR_OPEN_SQUARE,
CHAR_BACKWARD_SLASH,
CHAR_CLOSE_SQUARE,
CHAR_HAT,
CHAR_UNDERSCORE,
CHAR_OPEN_CURLY,
CHAR_PIPE,
CHAR_CLOSE_CURLY,
CHAR_TILDE,
CHAR_SPACE,
CHAR_HORISONTAL_TAB,
CHAR_VERTICAL_TAB,
CHAR_FORM_FEED_TAB,
CHAR_ENUM_END
};
enum LEXER_TYPE
{
KW_AUTO,
KW_DO,
KW_DOUBLE,
KW_INT,
KW_STRUCT,
KW_BREAK,
KW_ELSE,
KW_LONG,
KW_SWITCH,
KW_CASE,
KW_ENUM,
KW_REGISTER,
KW_TYPEDEF,
KW_CHAR,
KW_EXTERN,
KW_RETURN,
KW_UNION,
KW_CONST,
KW_FLOAT,
KW_SHORT,
KW_UNSIGNED,
KW_CONTINUE,
KW_FOR,
KW_SIGNED,
KW_VOID,
KW_DEFAULT,
KW_GOTO,
KW_SIZEOF,
KW_VOLATILE,
KW_IF,
KW_STATIC,
KW_WHILE,
KW_EXCLAMATION,
KW_PERCENT,
KW_AND,
KW_AND_AND,
KW_OPEN_NORMAL,
KW_CLOSE_NORMAL,
KW_STAR,
KW_PLUS,
KW_COMMA,
KW_MINUS,
KW_DOT,
KW_ARROW,
KW_COLUMN,
KW_SEMICOLON,
KW_LESS,
KW_EQ,
KW_EQEQ,
KW_MORE,
KW_QUESTION,
KW_HAT,
KW_PIPE,
KW_PIPE_PIPE,
KW_TILDE,
KW_PLUSPLUS,
KW_MINUSMINUS,
KW_SHIFT_RIGHT,
KW_SHIFT_LEFT,
KW_LESS_EQ,
KW_MORE_EQ,
KW_NOT_EQ,
KW_PLUS_EQ,
KW_MINUS_EQ,
KW_STAR_EQ,
KW_PERCENT_EQ,
KW_SHIFT_LEFT_EQ,
KW_SHIFT_RIGHT_EQ,
KW_AND_EQ,
KW_HAT_EQ,
KW_PIPE_EQ,
KW_HASHTAG,
KW_HASHTAG_HASHTAG,
KW_ELIPSIS,
KW_DIV,
KW_INLINE,
KW_RESTRICT,
KW_BOOL,
KW_COMPLEX,
KW_IMAGINARY,
KW_OPEN_SQUARE,
KW_CLOSE_SQUARE,
KW_CLOSE_CURLY,
KW_OPEN_CURLY,
KW_DIV_EQ,
KW_FORWARD_SLASH,
KW_NOTYPE,
KW_HEXADECIMAL_CONSTANT,
KW_DECIMAL_CONSTANT,
KW_OCTAL_CONSTANT ,
KW_UNSIGNED_DECIMAL_CONSTANT,
KW_UNSIGNED_OCTAL_CONSTANT,
KW_UNSIGNED_HEXADECIMAL_CONSTANT,
KW_UNSIGNED_LONG_HEXADECIMAL_CONSTANT,
KW_UNSIGNED_LONG_OCTAL_CONSTANT,
KW_UNSIGNED_LONG_DECIMAL_CONSTANT,
KW_UNSIGNED_LONG_LONG_DECIMAL_CONSTANT,
KW_UNSIGNED_LONG_LONG_HEXADECIMAL_CONSTANT,
KW_UNSIGNED_LONG_LONG_OCTAL_CONSTANT,
KW_LONG_HEXADECIMAL_CONSTANT,
KW_LONG_OCTAL_CONSTANT,
KW_LONG_DECIMAL_CONSTANT,
KW_LONG_LONG_HEXADECIMAL_CONSTANT,
KW_LONG_LONG_OCTAL_CONSTANT,
KW_LONG_LONG_DECIMAL_CONSTANT,
KW_DOUBLE_DECIMAL_CONSTANT,
KW_LONG_DOUBLE_DECIMAL_CONSTANT,
KW_FLOAT_DECIMAL_CONSTANT,
KW_DOUBLE_HEXADECIMAL_CONSTANT,
KW_LONG_DOUBLE_HEXADECIMAL_CONSTANT,
KW_FLOAT_HEXADECIMAL_CONSTANT,
KW_CONSTANT,
KW_COMMENT,
KW_ID,
KW_CHAR_CONSTANT,
KW_WIDE_CHAR_CONSTANT,
KW_STRING,
KW_WIDE_STRING,
PKW_IF,
PKW_IFDEF,
PKW_IFNDEF,
PKW_ELIF,
PKW_ELSE,
PKW_ENDIF,
PKW_INCLUDE,
PKW_FUNCTIONLIKE_DEFINE,
PKW_DEFINE,
PKW_UNDEF,
PKW_LINE,
PKW_ERROR,
PKW_DEFINED,
PKW_PRAGMA,
PKW_COMMENT,
PKW_NOTYPE,
PKW_FILE_MACRO,
PKW_DATE_MACRO,
PKW_LINE_MACRO,
PKW_STDC_MACRO,
PKW_STDC_HOSTED_MACRO,
PKW_STDC_VERSION_MACRO,
PKW_TIME_MACRO,
PKW_ANGULAR_BRACKET_INCLUDE_NAME,
PKW_CONSTANT,
PKW_ID,
PKW_PUNCTUATOR,
PKW_DIRECTIVE,
PKW_MACRO_ARGUMENT,
PKW_HASHTAG_UNARY_OP,
PKW_HASHTAG_HASHTAG_OP,
LT_EOF,
LT_ERROR,
LEXER_TYPE_END
};
struct Automata_Node;
#endif