Compare commits

..

17 Commits

Author SHA1 Message Date
b59c59e7e1 Refactor the lexer to use the state transitions table 2023-07-30 22:44:11 +01:00
574f771444 Update the state transitions table 2023-07-30 22:43:53 +01:00
1d118c8568 Remove notes 2023-07-30 22:43:37 +01:00
896a9ff085 Update run_tests.py 2023-07-30 22:29:06 +01:00
eece52600b Update run_tests.py 2023-07-30 21:46:28 +01:00
7cb4b28da8 Store the current character and add more handlers after the state
transition
2023-07-30 19:18:10 +01:00
bf958056bd Add basic test suite to validate that the parser works 2023-07-30 12:43:08 +01:00
ec6df32839 Start implementing using the state transition table in the lexer 2023-07-30 11:47:26 +01:00
de57d9f14b Add enum value for newline 2023-07-30 00:37:39 +01:00
f1f90cf56b Specify the length of the strings tables explicitly 2023-07-29 22:10:28 +01:00
41d7cf2717 Reformat 2023-07-29 22:09:09 +01:00
002a8e7064 Get the input and state strings from tables instead of switch cases 2023-07-29 22:07:03 +01:00
fc80095d1f Remove clear_file and update write_table to accept a file pointer 2023-07-29 21:46:59 +01:00
642d000ebd Fix keyword handling so the final keyword states don't consume input 2023-07-29 21:42:20 +01:00
b4a4865870 Regenerate the state table 2023-07-27 00:54:53 +01:00
1b4d6a6156 Update column width and write row state as a comment 2023-07-27 00:53:39 +01:00
26fabd91b9 Ensure build scripts fail if attempting to run them from different
directory
2023-07-25 09:00:11 +01:00
10 changed files with 555 additions and 1477 deletions

29
compile
View File

@@ -1,29 +1,28 @@
#!/bin/bash
SCRIPT_DIR="$(dirname $0)"
CC=clang
CFLAGS="-g -Wall -Werror -pedantic -I$SCRIPT_DIR/include"
SRC="$SCRIPT_DIR/src/main.c"
OUT=$SCRIPT_DIR/main
CFLAGS="-g -Wall -Werror -pedantic -I./include"
SRC="./src/main.c"
OUT=./main
# STATE_TABLE
$CC $CFLAGS -I$SCRIPT_DIR/include/lexer $SCRIPT_DIR/generate_state_table.c -o $SCRIPT_DIR/gentable
$SCRIPT_DIR/gentable
(set -x;$CC $CFLAGS -I./include/lexer ./generate_state_table.c -o ./gentable)
./gentable
# DSTRING
CFLAGS+=" -I$SCRIPT_DIR/include/dstring"
SRC+=" $SCRIPT_DIR/src/dstring/*.c"
CFLAGS+=" -I./include/dstring"
SRC+=" ./src/dstring/*.c"
# JSON_ENTITIES
CFLAGS+=" -I$SCRIPT_DIR/include/json_entities"
SRC+=" $SCRIPT_DIR/src/json_entities/*.c"
CFLAGS+=" -I./include/json_entities"
SRC+=" ./src/json_entities/*.c"
# LEXER
CFLAGS+=" -I$SCRIPT_DIR/include/lexer"
SRC+=" $SCRIPT_DIR/src/lexer/*.c"
CFLAGS+=" -I./include/lexer"
SRC+=" ./src/lexer/*.c"
# PARSER
CFLAGS+=" -I$SCRIPT_DIR/include/parser"
SRC+=" $SCRIPT_DIR/src/parser/*.c"
CFLAGS+=" -I./include/parser"
SRC+=" ./src/parser/*.c"
$CC $CFLAGS $SRC -o $OUT
(set -x;$CC $CFLAGS $SRC -o $OUT)

File diff suppressed because it is too large Load Diff

View File

@@ -4,9 +4,6 @@
#include "aliases.h"
#include <stdbool.h>
#define VALID_JSON true
#define INVALID_JSON false
typedef const char *str_view_t;
typedef enum {

View File

@@ -54,6 +54,7 @@ typedef enum {
} lexer_state_t;
typedef enum {
LEXER_INPUT_NEWLINE,
LEXER_INPUT_WHITE_SPACE,
LEXER_INPUT_OPEN_BRACE,
LEXER_INPUT_CLOSE_BRACE,

View File

@@ -1,42 +1,42 @@
// WHITE_SPACE | OPEN_BRACE | CLOSE_BRACE | OPEN_BRACKET | CLOSE_BRACKET | COMMA | COLON | DOUBLE_QUOTE | BACK_SLASH | FORWARD_SLASH | LOWER_A | LOWER_B | LOWER_C | LOWER_D | LOWER_E | LOWER_F | LOWER_L | LOWER_N | LOWER_R | LOWER_S | LOWER_T | LOWER_U | UPPER_A | UPPER_B | UPPER_C | UPPER_D | UPPER_E | UPPER_F | MINUS | PLUS | DECIMAL | ZERO | NON_ZERO | OTHER |
{ 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_START, LEXER_STATE_OBJECT_START, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_START, 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, LEXER_STATE_OBJECT_START, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_START, LEXER_STATE_ERROR, 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_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_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, 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_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_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, 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_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_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_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_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_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_FRACTION, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, },
{ LEXER_STATE_NUMBER_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_FRACTION, LEXER_STATE_NUMBER, LEXER_STATE_NUMBER, LEXER_STATE_ERROR, },
{ LEXER_STATE_NUMBER_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_EXPONENT, 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_EXPONENT, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_FRACTION, LEXER_STATE_FRACTION, 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_EXP_SIGN, LEXER_STATE_EXP_SIGN, LEXER_STATE_ERROR, LEXER_STATE_POWER, LEXER_STATE_POWER, 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_POWER, LEXER_STATE_POWER, LEXER_STATE_ERROR, },
{ LEXER_STATE_NUMBER_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_POWER, LEXER_STATE_POWER, LEXER_STATE_ERROR, },
{ LEXER_STATE_NUMBER_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_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING_END, LEXER_STATE_ESCAPE_SEQUENCE, 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_END, LEXER_STATE_ERROR, LEXER_STATE_OBJECT_END, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_END, LEXER_STATE_VALUE_END, LEXER_STATE_KEY_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_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_UNICODE_HEX1, 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_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, 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_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, 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_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, 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_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, 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_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_TR, 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_ERROR, LEXER_STATE_TRU, 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_TRUE, 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_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_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_FA, 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_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_FAL, 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_ERROR, LEXER_STATE_FALS, 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_FALSE, 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_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_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_NU, 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_NUL, 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_NULL, 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_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_END, },
{ LEXER_STATE_KEYWORD_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, },
// NEWLINE | WHITE_SPACE | OPEN_BRACE | CLOSE_BRACE | OPEN_BRACKET | CLOSE_BRACKET | COMMA | COLON | DOUBLE_QUOTE | BACK_SLASH | FORWARD_SLASH | LOWER_A | LOWER_B | LOWER_C | LOWER_D | LOWER_E | LOWER_F | LOWER_L | LOWER_N | LOWER_R | LOWER_S | LOWER_T | LOWER_U | UPPER_A | UPPER_B | UPPER_C | UPPER_D | UPPER_E | UPPER_F | MINUS | PLUS | DECIMAL | ZERO | NON_ZERO | OTHER |
{ 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_ERROR
{ LEXER_STATE_START, LEXER_STATE_START, LEXER_STATE_OBJECT_START, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_START, 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_START
{ LEXER_STATE_VALUE, LEXER_STATE_VALUE, LEXER_STATE_OBJECT_START, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_START, LEXER_STATE_ERROR, 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_VALUE
{ 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_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_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
{ 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_FRACTION, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, }, // LEXER_STATE_DECIMAL
{ LEXER_STATE_NUMBER_END, LEXER_STATE_NUMBER_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_FRACTION, LEXER_STATE_NUMBER, LEXER_STATE_NUMBER, LEXER_STATE_ERROR, }, // LEXER_STATE_NUMBER
{ LEXER_STATE_NUMBER_END, LEXER_STATE_NUMBER_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_EXPONENT, 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_EXPONENT, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_FRACTION, LEXER_STATE_FRACTION, LEXER_STATE_ERROR, }, // LEXER_STATE_FRACTION
{ 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_EXP_SIGN, LEXER_STATE_EXP_SIGN, LEXER_STATE_ERROR, LEXER_STATE_POWER, LEXER_STATE_POWER, LEXER_STATE_ERROR, }, // LEXER_STATE_EXPONENT
{ 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_POWER, LEXER_STATE_POWER, LEXER_STATE_ERROR, }, // LEXER_STATE_EXP_SIGN
{ LEXER_STATE_NUMBER_END, LEXER_STATE_NUMBER_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_POWER, LEXER_STATE_POWER, LEXER_STATE_ERROR, }, // LEXER_STATE_POWER
{ LEXER_STATE_NUMBER_END, LEXER_STATE_NUMBER_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_NUMBER_END
{ 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_END, LEXER_STATE_ESCAPE_SEQUENCE, 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_END, LEXER_STATE_STRING_END, LEXER_STATE_ERROR, LEXER_STATE_OBJECT_END, LEXER_STATE_ERROR, LEXER_STATE_ARRAY_END, LEXER_STATE_VALUE_END, LEXER_STATE_KEY_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_STRING_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_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_UNICODE_HEX1, 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_ESCAPE_SEQUENCE
{ 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_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_UNICODE_HEX2, LEXER_STATE_ERROR, }, // LEXER_STATE_UNICODE_HEX1
{ 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_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_UNICODE_HEX3, LEXER_STATE_ERROR, }, // LEXER_STATE_UNICODE_HEX2
{ 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_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_UNICODE_HEX4, LEXER_STATE_ERROR, }, // LEXER_STATE_UNICODE_HEX3
{ 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_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_ERROR, LEXER_STATE_STRING, LEXER_STATE_STRING, LEXER_STATE_ERROR, }, // LEXER_STATE_UNICODE_HEX4
{ 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_TR, 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_T
{ 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_TRU, 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_TR
{ 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_TRUE, 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_TRU
{ 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_TRUE
{ 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_FA, 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_F
{ 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_FAL, 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_FA
{ 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_FALS, 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_FAL
{ 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_FALSE, 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_FALS
{ 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_FALSE
{ 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_NU, 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_N
{ 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_NUL, 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_NU
{ 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_NULL, 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_NUL
{ 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_NULL
{ LEXER_STATE_KEYWORD_END, LEXER_STATE_KEYWORD_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_KEYWORD_END

41
notes
View File

@@ -1,41 +0,0 @@
TOKENS
Symbols
Array notation
[
]
Object notation
{
}
:
Separator
,
String
"
\ (for escape sequences)
Numerical
-
.
eE (exponents only)
+ (exponents only)
Keywords
true
false
null
Key
strings only
Implement stack data structure for pushing and pulling states when necessary
LEXER STATES
START
ERROR
END
VALUE
OBJECT_KEY
---------
OBJECT |
ARRAY |
PRIMITIVES |------> Can be values
STRING--------|------> Only one that can be an object key
NUMBER |
---------

View File

@@ -1,5 +0,0 @@
#!/bin/bash
for JSON in $(find test_files -iregex .*json); do
./main $JSON
done

71
run_tests.py Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/env python3
import json
import subprocess
from pathlib import Path
class TermFormat:
OKGREEN = "\033[92m"
FAIL = "\033[91m"
ENDC = "\033[0m"
BOLD = "\033[1m"
def print_header(header, width, padding):
print(
f"{TermFormat.BOLD}{'=' * (int(width / 3) + padding)}{header}{'=' * (int(width / 3) + padding)}{TermFormat.ENDC}"
)
test_dir = Path(__file__).parent / "test_files"
hj_exec = Path(__file__).parent / "main"
valid_files = [
json_file
for json_file in test_dir.iterdir()
if json_file.is_file()
and "json" in json_file.suffix
and "invalid" not in json_file.stem
]
name_width = 0
for vf in valid_files:
if len(str(vf)) > name_width:
name_width = len(str(vf))
print_header("helloJSON TEST SUITE", name_width, 9)
print()
print_header("VALID FILES", name_width, 13)
for vf in valid_files:
with open(vf, "r") as infile:
try:
original = json.load(infile)
except json.JSONDecodeError as e:
print(
f"\n{TermFormat.BOLD}{TermFormat.FAIL}ERROR:{TermFormat.ENDC} Failed to decode {str(vf)}\n{e.msg}"
)
continue
cmd = [hj_exec, vf]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
proc.wait()
stdout, _ = proc.communicate()
try:
parsed = json.loads(stdout)
except:
parsed = None
pass
match = original == parsed
print(
f"\n{str(vf):{name_width + 3}} {TermFormat.BOLD}{TermFormat.OKGREEN if match else TermFormat.FAIL}{'PASSED' if match else 'FAILED'}{TermFormat.ENDC}"
)

File diff suppressed because it is too large Load Diff

View File

@@ -5,7 +5,7 @@
"position": [
25.1212,
55.1535
],
]
},
{
"name": "Shangri-La Hotel",