41 lines
600 B
C
41 lines
600 B
C
#ifndef LEXER_STATES_H
|
|
#define LEXER_STATES_H
|
|
|
|
#include "aliases.h"
|
|
#include <stdbool.h>
|
|
|
|
#define VALID_JSON true
|
|
#define INVALID_JSON false
|
|
|
|
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_STRING_LITERAL,
|
|
TK_INTEGER_LITERAL,
|
|
TK_DOUBLE_LITERAL,
|
|
} token_type_t;
|
|
|
|
typedef union {
|
|
void *no_val;
|
|
i64 num_int;
|
|
f64 num_frac;
|
|
} 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
|