Rename lexer_states to lexer
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "lexer_states.h"
|
||||
#include "lexer.h"
|
||||
#include "aliases.h"
|
||||
#include "dstring.h"
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <stdbool.h>
|
||||
@@ -10,6 +11,7 @@
|
||||
#define MAX_KEYWORD_LENGTH 5
|
||||
#define UNICODE_LENGTH 4
|
||||
#define MAX_STACK_CAPACITY 1024
|
||||
#define STRING_BUF_START_CAPACITY 1024
|
||||
|
||||
typedef enum {
|
||||
// GENERAL STATES
|
||||
@@ -76,12 +78,13 @@ typedef struct {
|
||||
} lexer_string_t;
|
||||
|
||||
struct lexer {
|
||||
lexer_state_t current;
|
||||
state_stack_t stack;
|
||||
u64 line;
|
||||
u64 column;
|
||||
lexer_state_t current;
|
||||
state_stack_t stack;
|
||||
lexer_string_t keyword;
|
||||
lexer_string_t codepoint;
|
||||
dstr_t *current_string;
|
||||
};
|
||||
|
||||
void stack_push(state_stack_t *stack, lexer_state_t value);
|
||||
@@ -123,6 +126,13 @@ bool validate_json(char *json) {
|
||||
lexer.current = LEXER_STATE_START;
|
||||
lexer.keyword.type = LEXER_STRING_KEYWORD;
|
||||
lexer.codepoint.type = LEXER_STRING_UNICODE;
|
||||
lexer.current_string = dstr_with_capacity(STRING_BUF_START_CAPACITY);
|
||||
|
||||
if (!lexer.current_string) {
|
||||
// TODO (Abdelrahman): This is fine for now, but it doesn't make sense to
|
||||
// return INVALID_JSON if string allocation fails
|
||||
return INVALID_JSON;
|
||||
}
|
||||
|
||||
for (char *c = json; *c != '\0'; ++c) {
|
||||
// printf("\nINPUT=>%s\n", c);
|
Reference in New Issue
Block a user