94 lines
1.9 KiB
C
94 lines
1.9 KiB
C
#ifndef LEXER_DATA_H
|
|
#define LEXER_DATA_H
|
|
|
|
typedef enum {
|
|
// GENERAL STATES
|
|
LEXER_STATE_ERROR,
|
|
LEXER_STATE_START,
|
|
LEXER_STATE_VALUE,
|
|
// 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,
|
|
// 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_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
|