Update the state transitions table
This commit is contained in:
parent
1d118c8568
commit
574f771444
@ -19,7 +19,9 @@ INTERNAL lexer_state_t lexer_state_machine(lexer_state_t state,
|
||||
INTERNAL lexer_state_t handle_lexer_start(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_last_collection(char input);
|
||||
INTERNAL lexer_state_t handle_object(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_object_end(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_array(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_array_end(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_key(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_value(lexer_input_t input);
|
||||
INTERNAL lexer_state_t handle_string(lexer_input_t input);
|
||||
@ -254,8 +256,12 @@ lexer_state_t lexer_state_machine(lexer_state_t state, lexer_input_t input) {
|
||||
return handle_value(input);
|
||||
case LEXER_STATE_OBJECT:
|
||||
return handle_object(input);
|
||||
case LEXER_STATE_OBJECT_END:
|
||||
return handle_object_end(input);
|
||||
case LEXER_STATE_ARRAY:
|
||||
return handle_array(input);
|
||||
case LEXER_STATE_ARRAY_END:
|
||||
return handle_array_end(input);
|
||||
case LEXER_STATE_KEY:
|
||||
return handle_key(input);
|
||||
case LEXER_STATE_DECIMAL:
|
||||
@ -315,8 +321,6 @@ lexer_state_t lexer_state_machine(lexer_state_t state, lexer_input_t input) {
|
||||
case LEXER_STATE_NULL:
|
||||
case LEXER_STATE_OBJECT_START:
|
||||
case LEXER_STATE_ARRAY_START:
|
||||
case LEXER_STATE_OBJECT_END:
|
||||
case LEXER_STATE_ARRAY_END:
|
||||
case LEXER_STATE_KEY_END:
|
||||
case LEXER_STATE_VALUE_END:
|
||||
case LEXER_STATE_ERROR:
|
||||
@ -361,6 +365,21 @@ lexer_state_t handle_object(lexer_input_t input) {
|
||||
}
|
||||
}
|
||||
|
||||
lexer_state_t handle_object_end(lexer_input_t input) {
|
||||
switch (input) {
|
||||
case LEXER_INPUT_NEWLINE:
|
||||
case LEXER_INPUT_WHITE_SPACE:
|
||||
case LEXER_INPUT_CLOSE_BRACE:
|
||||
return LEXER_STATE_OBJECT_END;
|
||||
case LEXER_INPUT_CLOSE_BRACKET:
|
||||
return LEXER_STATE_ARRAY_END;
|
||||
case LEXER_INPUT_COMMA:
|
||||
return LEXER_STATE_VALUE_END;
|
||||
default:
|
||||
return LEXER_STATE_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
lexer_state_t handle_array(lexer_input_t input) {
|
||||
switch (input) {
|
||||
case LEXER_INPUT_NEWLINE:
|
||||
@ -373,6 +392,21 @@ lexer_state_t handle_array(lexer_input_t input) {
|
||||
}
|
||||
}
|
||||
|
||||
lexer_state_t handle_array_end(lexer_input_t input) {
|
||||
switch (input) {
|
||||
case LEXER_INPUT_NEWLINE:
|
||||
case LEXER_INPUT_WHITE_SPACE:
|
||||
case LEXER_INPUT_CLOSE_BRACKET:
|
||||
return LEXER_STATE_ARRAY_END;
|
||||
case LEXER_INPUT_CLOSE_BRACE:
|
||||
return LEXER_STATE_OBJECT_END;
|
||||
case LEXER_INPUT_COMMA:
|
||||
return LEXER_STATE_VALUE_END;
|
||||
default:
|
||||
return LEXER_STATE_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
lexer_state_t handle_key(lexer_input_t input) { return LEXER_STATE_STRING; }
|
||||
|
||||
lexer_state_t handle_value(lexer_input_t input) {
|
||||
|
@ -5,10 +5,10 @@
|
||||
{ LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_VALUE_END
|
||||
{ LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_OBJECT_START
|
||||
{ LEXER_STATE_OBJECT, LEXER_STATE_OBJECT, LEXER_STATE_ERROR, LEXER_STATE_OBJECT_END, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_KEY, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_OBJECT
|
||||
{ LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_OBJECT_END
|
||||
{ LEXER_STATE_OBJECT_END, LEXER_STATE_OBJECT_END, LEXER_STATE_ERROR, LEXER_STATE_OBJECT_END, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_END, LEXER_STATE_VALUE_END, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_OBJECT_END
|
||||
{ LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_ARRAY_START
|
||||
{ LEXER_STATE_ARRAY, LEXER_STATE_ARRAY, LEXER_STATE_OBJECT_START, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_START, LEXER_STATE_ARRAY_END, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_F, LEXER_STATE_ERROR, LEXER_STATE_N, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_T, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_NUMBER, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_DECIMAL, LEXER_STATE_NUMBER, LEXER_STATE_ERROR, }, // LEXER_STATE_ARRAY
|
||||
{ LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_ARRAY_END
|
||||
{ LEXER_STATE_ARRAY_END, LEXER_STATE_ARRAY_END, LEXER_STATE_ERROR, LEXER_STATE_OBJECT_END, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_END, LEXER_STATE_VALUE_END, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_ARRAY_END
|
||||
{ LEXER_STATE_LAST_COLLECTION, LEXER_STATE_LAST_COLLECTION, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_LAST_COLLECTION
|
||||
{ LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, }, // LEXER_STATE_KEY
|
||||
{ LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_KEY_END
|
||||
|
Loading…
Reference in New Issue
Block a user