#ifndef LEXER_DATA_H #define LEXER_DATA_H typedef enum { // GENERAL STATES LEXER_STATE_ERROR, LEXER_STATE_START, LEXER_STATE_VALUE, LEXER_STATE_VALUE_END, // COLLECTION STATES LEXER_STATE_OBJECT_START, LEXER_STATE_OBJECT, LEXER_STATE_OBJECT_END, LEXER_STATE_ARRAY_START, LEXER_STATE_ARRAY, LEXER_STATE_ARRAY_END, LEXER_STATE_LAST_COLLECTION, // OBJECT STATES LEXER_STATE_KEY, LEXER_STATE_KEY_END, // NUMBER STATES LEXER_STATE_DECIMAL, LEXER_STATE_NUMBER, LEXER_STATE_FRACTION, LEXER_STATE_EXPONENT, LEXER_STATE_EXP_SIGN, LEXER_STATE_POWER, LEXER_STATE_NUMBER_END, // STRING STATES LEXER_STATE_STRING, LEXER_STATE_STRING_END, LEXER_STATE_ESCAPE_SEQUENCE, LEXER_STATE_UNICODE_HEX1, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX4, // KEYWORD STATES LEXER_STATE_T, LEXER_STATE_TR, LEXER_STATE_TRU, LEXER_STATE_TRUE, LEXER_STATE_F, LEXER_STATE_FA, LEXER_STATE_FAL, LEXER_STATE_FALS, LEXER_STATE_FALSE, LEXER_STATE_N, LEXER_STATE_NU, LEXER_STATE_NUL, LEXER_STATE_NULL, LEXER_STATE_KEYWORD_END, COUNT_LEXER_STATES, } lexer_state_t; typedef enum { LEXER_INPUT_NEWLINE, LEXER_INPUT_WHITE_SPACE, LEXER_INPUT_OPEN_BRACE, LEXER_INPUT_CLOSE_BRACE, LEXER_INPUT_OPEN_BRACKET, LEXER_INPUT_CLOSE_BRACKET, LEXER_INPUT_COMMA, LEXER_INPUT_COLON, LEXER_INPUT_DOUBLE_QUOTE, LEXER_INPUT_BACK_SLASH, LEXER_INPUT_FORWARD_SLASH, LEXER_INPUT_LOWER_A, LEXER_INPUT_LOWER_B, LEXER_INPUT_LOWER_C, LEXER_INPUT_LOWER_D, LEXER_INPUT_LOWER_E, LEXER_INPUT_LOWER_F, LEXER_INPUT_LOWER_L, LEXER_INPUT_LOWER_N, LEXER_INPUT_LOWER_R, LEXER_INPUT_LOWER_S, LEXER_INPUT_LOWER_T, LEXER_INPUT_LOWER_U, LEXER_INPUT_UPPER_A, LEXER_INPUT_UPPER_B, LEXER_INPUT_UPPER_C, LEXER_INPUT_UPPER_D, LEXER_INPUT_UPPER_E, LEXER_INPUT_UPPER_F, LEXER_INPUT_MINUS, LEXER_INPUT_PLUS, LEXER_INPUT_DECIMAL, LEXER_INPUT_ZERO, LEXER_INPUT_NON_ZERO, LEXER_INPUT_OTHER, COUNT_LEXER_INPUTS, } lexer_input_t; #endif // !LEXER_DATA_H