#ifndef LEXER_STATES_H #define LEXER_STATES_H #include "aliases.h" #include #define VALID_JSON true #define INVALID_JSON false typedef const char *const str_view_t; typedef enum { TK_L_BRACE, TK_R_BRACE, TK_L_BRACKET, TK_R_BRACKET, TK_COLON, TK_COMMA, TK_NULL, TK_TRUE, TK_FALSE, TK_STR_KEY, TK_STR_VAL, TK_INTEGER, TK_DOUBLE, } token_type_t; typedef union { void *no_val; i64 num_int; f64 num_frac; str_view_t string; } token_value_t; typedef struct { token_type_t type; token_value_t value; } token_t; typedef struct lexer lexer_t; bool validate_json(char *json); #endif // !LEXER_STATES_H