Rename lexer string functions
This commit is contained in:
parent
57fe5ab1b7
commit
f0043a691c
@ -17,9 +17,10 @@ typedef enum {
|
|||||||
TK_NULL,
|
TK_NULL,
|
||||||
TK_TRUE,
|
TK_TRUE,
|
||||||
TK_FALSE,
|
TK_FALSE,
|
||||||
TK_STRING_LITERAL,
|
TK_STR_KEY,
|
||||||
TK_INTEGER_LITERAL,
|
TK_STR_VAL,
|
||||||
TK_DOUBLE_LITERAL,
|
TK_INTEGER,
|
||||||
|
TK_DOUBLE,
|
||||||
} token_type_t;
|
} token_type_t;
|
||||||
|
|
||||||
typedef union {
|
typedef union {
|
||||||
|
@ -90,8 +90,8 @@ struct lexer {
|
|||||||
void stack_push(state_stack_t *stack, lexer_state_t value);
|
void stack_push(state_stack_t *stack, lexer_state_t value);
|
||||||
lexer_state_t stack_pop(state_stack_t *stack);
|
lexer_state_t stack_pop(state_stack_t *stack);
|
||||||
|
|
||||||
void append_to_string(lexer_string_t *str, char input);
|
void append_to_lex_str(lexer_string_t *str, char input);
|
||||||
void clear_string(lexer_string_t *str);
|
void clear_lex_str(lexer_string_t *str);
|
||||||
bool strequal(const char *first, const char *second);
|
bool strequal(const char *first, const char *second);
|
||||||
bool is_valid_hex_char(const char input);
|
bool is_valid_hex_char(const char input);
|
||||||
bool ishex(const char input);
|
bool ishex(const char input);
|
||||||
@ -165,7 +165,7 @@ lexer_state_t stack_pop(state_stack_t *stack) {
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
void append_to_string(lexer_string_t *lex_str, char input) {
|
void append_to_lex_str(lexer_string_t *lex_str, char input) {
|
||||||
u64 capacity = 0;
|
u64 capacity = 0;
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
|
|
||||||
@ -191,7 +191,7 @@ void append_to_string(lexer_string_t *lex_str, char input) {
|
|||||||
str[(lex_str->size)++] = input;
|
str[(lex_str->size)++] = input;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clear_string(lexer_string_t *lex_str) {
|
void clear_lex_str(lexer_string_t *lex_str) {
|
||||||
u64 capacity = 1;
|
u64 capacity = 1;
|
||||||
char *str = NULL;
|
char *str = NULL;
|
||||||
|
|
||||||
@ -423,7 +423,7 @@ lexer_state_t handle_value(lexer_t *lexer, char input) {
|
|||||||
case 't':
|
case 't':
|
||||||
case 'f':
|
case 'f':
|
||||||
case 'n':
|
case 'n':
|
||||||
append_to_string(&(lexer->keyword), input);
|
append_to_lex_str(&(lexer->keyword), input);
|
||||||
|
|
||||||
return handle_keyword(input);
|
return handle_keyword(input);
|
||||||
}
|
}
|
||||||
@ -486,14 +486,14 @@ lexer_state_t handle_escape_sequence(char input) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lexer_state_t handle_unicode_sequence(lexer_t *lexer, char input) {
|
lexer_state_t handle_unicode_sequence(lexer_t *lexer, char input) {
|
||||||
append_to_string(&(lexer->codepoint), input);
|
append_to_lex_str(&(lexer->codepoint), input);
|
||||||
|
|
||||||
if (!ishex(input)) {
|
if (!ishex(input)) {
|
||||||
clear_string(&(lexer->codepoint));
|
clear_lex_str(&(lexer->codepoint));
|
||||||
|
|
||||||
return LEXER_STATE_ERROR;
|
return LEXER_STATE_ERROR;
|
||||||
} else if (lexer->codepoint.size == UNICODE_LENGTH) {
|
} else if (lexer->codepoint.size == UNICODE_LENGTH) {
|
||||||
clear_string(&(lexer->codepoint));
|
clear_lex_str(&(lexer->codepoint));
|
||||||
|
|
||||||
return LEXER_STATE_STRING;
|
return LEXER_STATE_STRING;
|
||||||
}
|
}
|
||||||
@ -603,7 +603,7 @@ lexer_state_t handle_true(lexer_t *lexer, char input) {
|
|||||||
char current[MAX_KEYWORD_LENGTH + 1];
|
char current[MAX_KEYWORD_LENGTH + 1];
|
||||||
strcpy(current, lexer->keyword.keyword.str);
|
strcpy(current, lexer->keyword.keyword.str);
|
||||||
|
|
||||||
append_to_string(&(lexer->keyword), input);
|
append_to_lex_str(&(lexer->keyword), input);
|
||||||
|
|
||||||
bool return_state_true = (strequal(current, "t") && input == 'r') ||
|
bool return_state_true = (strequal(current, "t") && input == 'r') ||
|
||||||
(strequal(current, "tr") && input == 'u');
|
(strequal(current, "tr") && input == 'u');
|
||||||
@ -623,7 +623,7 @@ lexer_state_t handle_false(lexer_t *lexer, char input) {
|
|||||||
char current[MAX_KEYWORD_LENGTH + 1];
|
char current[MAX_KEYWORD_LENGTH + 1];
|
||||||
strcpy(current, lexer->keyword.keyword.str);
|
strcpy(current, lexer->keyword.keyword.str);
|
||||||
|
|
||||||
append_to_string(&(lexer->keyword), input);
|
append_to_lex_str(&(lexer->keyword), input);
|
||||||
|
|
||||||
bool return_state_false = (strequal(current, "f") && input == 'a') ||
|
bool return_state_false = (strequal(current, "f") && input == 'a') ||
|
||||||
(strequal(current, "fa") && input == 'l') ||
|
(strequal(current, "fa") && input == 'l') ||
|
||||||
@ -644,7 +644,7 @@ lexer_state_t handle_null(lexer_t *lexer, char input) {
|
|||||||
char current[MAX_KEYWORD_LENGTH + 1];
|
char current[MAX_KEYWORD_LENGTH + 1];
|
||||||
strcpy(current, lexer->keyword.keyword.str);
|
strcpy(current, lexer->keyword.keyword.str);
|
||||||
|
|
||||||
append_to_string(&(lexer->keyword), input);
|
append_to_lex_str(&(lexer->keyword), input);
|
||||||
|
|
||||||
bool return_state_null = (strequal(current, "n") && input == 'u') ||
|
bool return_state_null = (strequal(current, "n") && input == 'u') ||
|
||||||
(strequal(current, "nu") && input == 'l');
|
(strequal(current, "nu") && input == 'l');
|
||||||
@ -661,7 +661,7 @@ lexer_state_t handle_null(lexer_t *lexer, char input) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lexer_state_t handle_keyword_end(lexer_t *lexer, char input) {
|
lexer_state_t handle_keyword_end(lexer_t *lexer, char input) {
|
||||||
clear_string(&(lexer->keyword));
|
clear_lex_str(&(lexer->keyword));
|
||||||
|
|
||||||
if (isspace(input)) {
|
if (isspace(input)) {
|
||||||
return LEXER_STATE_KEYWORD_END;
|
return LEXER_STATE_KEYWORD_END;
|
||||||
|
Loading…
Reference in New Issue
Block a user