WONKY



LOG | FILES | OVERVIEW


#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