Add dstr_resize and rename the dstring functions
This commit is contained in:
		| @@ -14,9 +14,9 @@ | ||||
|       "main", | ||||
|       "src/main.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/main.c", | ||||
|     "output": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/main" | ||||
|     "directory": "/Users/abdelrahman/dev/personal/say-it-in-json", | ||||
|     "file": "/Users/abdelrahman/dev/personal/say-it-in-json/src/main.c", | ||||
|     "output": "/Users/abdelrahman/dev/personal/say-it-in-json/main" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
| @@ -33,9 +33,9 @@ | ||||
|       "main", | ||||
|       "src/dstring/dstring.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/dstring/dstring.c", | ||||
|     "output": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/main" | ||||
|     "directory": "/Users/abdelrahman/dev/personal/say-it-in-json", | ||||
|     "file": "/Users/abdelrahman/dev/personal/say-it-in-json/src/dstring/dstring.c", | ||||
|     "output": "/Users/abdelrahman/dev/personal/say-it-in-json/main" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
| @@ -52,215 +52,8 @@ | ||||
|       "main", | ||||
|       "src/lexer/lexer.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/lexer/lexer.c", | ||||
|     "output": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/main" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
|       "/usr/bin/clang-16", | ||||
|       "-cc1", | ||||
|       "-triple", | ||||
|       "x86_64-redhat-linux-gnu", | ||||
|       "-emit-obj", | ||||
|       "-mrelax-all", | ||||
|       "-disable-free", | ||||
|       "-clear-ast-before-backend", | ||||
|       "-disable-llvm-verifier", | ||||
|       "-discard-value-names", | ||||
|       "-main-file-name", | ||||
|       "-mrelocation-model", | ||||
|       "static", | ||||
|       "-mframe-pointer=all", | ||||
|       "-fmath-errno", | ||||
|       "-ffp-contract=on", | ||||
|       "-fno-rounding-math", | ||||
|       "-mconstructor-aliases", | ||||
|       "-funwind-tables=2", | ||||
|       "-target-cpu", | ||||
|       "x86-64", | ||||
|       "-tune-cpu", | ||||
|       "generic", | ||||
|       "-mllvm", | ||||
|       "-treat-scalable-fixed-error-as-warning", | ||||
|       "-debug-info-kind=constructor", | ||||
|       "-dwarf-version=4", | ||||
|       "-debugger-tuning=gdb", | ||||
|       "-fcoverage-compilation-dir=/home/abdelrahman/dev_work/say_it_in_json", | ||||
|       "-resource-dir", | ||||
|       "/usr/lib64/clang/16", | ||||
|       "-I", | ||||
|       "include", | ||||
|       "-I", | ||||
|       "include/dstring", | ||||
|       "-I", | ||||
|       "include/lexer", | ||||
|       "-internal-isystem", | ||||
|       "/usr/lib64/clang/16/include", | ||||
|       "-internal-isystem", | ||||
|       "/usr/local/include", | ||||
|       "-internal-isystem", | ||||
|       "/usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include", | ||||
|       "-internal-externc-isystem", | ||||
|       "/include", | ||||
|       "-internal-externc-isystem", | ||||
|       "/usr/include", | ||||
|       "-Wall", | ||||
|       "-Werror", | ||||
|       "-pedantic", | ||||
|       "-fdebug-compilation-dir=/home/abdelrahman/dev_work/say_it_in_json", | ||||
|       "-ferror-limit", | ||||
|       "19", | ||||
|       "-fgnuc-version=4.2.1", | ||||
|       "-fcolor-diagnostics", | ||||
|       "-faddrsig", | ||||
|       "-D__GCC_HAVE_DWARF2_CFI_ASM=1", | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/main-e1ef59.o", | ||||
|       "src/main.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/main.c", | ||||
|     "output": "/tmp/main-e1ef59.o" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
|       "/usr/bin/clang-16", | ||||
|       "-cc1", | ||||
|       "-triple", | ||||
|       "x86_64-redhat-linux-gnu", | ||||
|       "-emit-obj", | ||||
|       "-mrelax-all", | ||||
|       "-disable-free", | ||||
|       "-clear-ast-before-backend", | ||||
|       "-disable-llvm-verifier", | ||||
|       "-discard-value-names", | ||||
|       "-main-file-name", | ||||
|       "-mrelocation-model", | ||||
|       "static", | ||||
|       "-mframe-pointer=all", | ||||
|       "-fmath-errno", | ||||
|       "-ffp-contract=on", | ||||
|       "-fno-rounding-math", | ||||
|       "-mconstructor-aliases", | ||||
|       "-funwind-tables=2", | ||||
|       "-target-cpu", | ||||
|       "x86-64", | ||||
|       "-tune-cpu", | ||||
|       "generic", | ||||
|       "-mllvm", | ||||
|       "-treat-scalable-fixed-error-as-warning", | ||||
|       "-debug-info-kind=constructor", | ||||
|       "-dwarf-version=4", | ||||
|       "-debugger-tuning=gdb", | ||||
|       "-fcoverage-compilation-dir=/home/abdelrahman/dev_work/say_it_in_json", | ||||
|       "-resource-dir", | ||||
|       "/usr/lib64/clang/16", | ||||
|       "-I", | ||||
|       "include", | ||||
|       "-I", | ||||
|       "include/dstring", | ||||
|       "-I", | ||||
|       "include/lexer", | ||||
|       "-internal-isystem", | ||||
|       "/usr/lib64/clang/16/include", | ||||
|       "-internal-isystem", | ||||
|       "/usr/local/include", | ||||
|       "-internal-isystem", | ||||
|       "/usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include", | ||||
|       "-internal-externc-isystem", | ||||
|       "/include", | ||||
|       "-internal-externc-isystem", | ||||
|       "/usr/include", | ||||
|       "-Wall", | ||||
|       "-Werror", | ||||
|       "-pedantic", | ||||
|       "-fdebug-compilation-dir=/home/abdelrahman/dev_work/say_it_in_json", | ||||
|       "-ferror-limit", | ||||
|       "19", | ||||
|       "-fgnuc-version=4.2.1", | ||||
|       "-fcolor-diagnostics", | ||||
|       "-faddrsig", | ||||
|       "-D__GCC_HAVE_DWARF2_CFI_ASM=1", | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/dstring-b2eb78.o", | ||||
|       "src/dstring/dstring.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/dstring/dstring.c", | ||||
|     "output": "/tmp/dstring-b2eb78.o" | ||||
|   }, | ||||
|   { | ||||
|     "arguments": [ | ||||
|       "/usr/bin/clang-16", | ||||
|       "-cc1", | ||||
|       "-triple", | ||||
|       "x86_64-redhat-linux-gnu", | ||||
|       "-emit-obj", | ||||
|       "-mrelax-all", | ||||
|       "-disable-free", | ||||
|       "-clear-ast-before-backend", | ||||
|       "-disable-llvm-verifier", | ||||
|       "-discard-value-names", | ||||
|       "-main-file-name", | ||||
|       "-mrelocation-model", | ||||
|       "static", | ||||
|       "-mframe-pointer=all", | ||||
|       "-fmath-errno", | ||||
|       "-ffp-contract=on", | ||||
|       "-fno-rounding-math", | ||||
|       "-mconstructor-aliases", | ||||
|       "-funwind-tables=2", | ||||
|       "-target-cpu", | ||||
|       "x86-64", | ||||
|       "-tune-cpu", | ||||
|       "generic", | ||||
|       "-mllvm", | ||||
|       "-treat-scalable-fixed-error-as-warning", | ||||
|       "-debug-info-kind=constructor", | ||||
|       "-dwarf-version=4", | ||||
|       "-debugger-tuning=gdb", | ||||
|       "-fcoverage-compilation-dir=/home/abdelrahman/dev_work/say_it_in_json", | ||||
|       "-resource-dir", | ||||
|       "/usr/lib64/clang/16", | ||||
|       "-I", | ||||
|       "include", | ||||
|       "-I", | ||||
|       "include/dstring", | ||||
|       "-I", | ||||
|       "include/lexer", | ||||
|       "-internal-isystem", | ||||
|       "/usr/lib64/clang/16/include", | ||||
|       "-internal-isystem", | ||||
|       "/usr/local/include", | ||||
|       "-internal-isystem", | ||||
|       "/usr/bin/../lib/gcc/x86_64-redhat-linux/13/../../../../x86_64-redhat-linux/include", | ||||
|       "-internal-externc-isystem", | ||||
|       "/include", | ||||
|       "-internal-externc-isystem", | ||||
|       "/usr/include", | ||||
|       "-Wall", | ||||
|       "-Werror", | ||||
|       "-pedantic", | ||||
|       "-fdebug-compilation-dir=/home/abdelrahman/dev_work/say_it_in_json", | ||||
|       "-ferror-limit", | ||||
|       "19", | ||||
|       "-fgnuc-version=4.2.1", | ||||
|       "-fcolor-diagnostics", | ||||
|       "-faddrsig", | ||||
|       "-D__GCC_HAVE_DWARF2_CFI_ASM=1", | ||||
|       "-x", | ||||
|       "c", | ||||
|       "-o", | ||||
|       "/tmp/lexer-b0ee1f.o", | ||||
|       "src/lexer/lexer.c" | ||||
|     ], | ||||
|     "directory": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json", | ||||
|     "file": "/mnt/3A5CDF785CDF2CFF/Users/abdoo/dev/say_it_in_json/src/lexer/lexer.c", | ||||
|     "output": "/tmp/lexer-b0ee1f.o" | ||||
|     "directory": "/Users/abdelrahman/dev/personal/say-it-in-json", | ||||
|     "file": "/Users/abdelrahman/dev/personal/say-it-in-json/src/lexer/lexer.c", | ||||
|     "output": "/Users/abdelrahman/dev/personal/say-it-in-json/main" | ||||
|   } | ||||
| ] | ||||
|   | ||||
| @@ -3,17 +3,19 @@ | ||||
|  | ||||
| #include "aliases.h" | ||||
|  | ||||
| typedef struct dstr dstr_t; | ||||
| typedef struct dstring dstr_t; | ||||
|  | ||||
| dstr_t *dstr_with_capacity(u64 capacity); | ||||
| dstr_t *dstr_from_string(const char *str); | ||||
| void update_dstr(dstr_t **dst, const char *src); | ||||
| void delete_dstr(dstr_t **str); | ||||
| void concat_dstr(dstr_t **dst, const char *src); | ||||
| void append_to_dstr(dstr_t **dst, char c); | ||||
| void empty_dstr(dstr_t *str); | ||||
| void print_dstr(const dstr_t *str); | ||||
| void dstr_update(dstr_t **dst, const char *src); | ||||
| void dstr_free(dstr_t **str); | ||||
| void dstr_concat(dstr_t **dst, const char *src); | ||||
| void dstr_append(dstr_t **dst, char c); | ||||
| void dstr_resize(dstr_t **str); | ||||
| void dstr_clear(dstr_t *str); | ||||
| void dstr_print(const dstr_t *str); | ||||
| u64 dstr_length(const dstr_t *str); | ||||
| u64 dstr_capacity(const dstr_t *str); | ||||
| const char *dstr_to_cstr(const dstr_t *str); | ||||
|  | ||||
| #endif // !DSTRING_H | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
| // constantly reallocate | ||||
| #define CAPACITY_SCALAR 8 | ||||
|  | ||||
| struct dstr { | ||||
| struct dstring { | ||||
|   u64 capacity; | ||||
|   u64 size; | ||||
|   char buf[]; | ||||
| @@ -45,7 +45,7 @@ dstr_t *dstr_from_string(const char *str) { | ||||
|   return out; | ||||
| } | ||||
|  | ||||
| void update_dstr(dstr_t **dst, const char *src) { | ||||
| void dstr_update(dstr_t **dst, const char *src) { | ||||
|   if (!(*dst)) { | ||||
|     return; | ||||
|   } | ||||
| @@ -77,7 +77,7 @@ void update_dstr(dstr_t **dst, const char *src) { | ||||
|   } | ||||
| } | ||||
|  | ||||
| void delete_dstr(dstr_t **str) { | ||||
| void dstr_free(dstr_t **str) { | ||||
|   if (!(*str)) { | ||||
|     return; | ||||
|   } | ||||
| @@ -86,7 +86,7 @@ void delete_dstr(dstr_t **str) { | ||||
|   *str = NULL; | ||||
| } | ||||
|  | ||||
| void concat_dstr(dstr_t **dst, const char *src) { | ||||
| void dstr_concat(dstr_t **dst, const char *src) { | ||||
|   if (!(*dst)) { | ||||
|     return; | ||||
|   } | ||||
| @@ -105,10 +105,10 @@ void concat_dstr(dstr_t **dst, const char *src) { | ||||
|   strncpy(str, (*dst)->buf, (*dst)->size); | ||||
|   strncat(str, src, src_length); | ||||
|  | ||||
|   update_dstr(dst, str); | ||||
|   dstr_update(dst, str); | ||||
| } | ||||
|  | ||||
| void append_to_dstr(dstr_t **dst, char c) { | ||||
| void dstr_append(dstr_t **dst, char c) { | ||||
|   if (!(*dst)) { | ||||
|     return; | ||||
|   } | ||||
| @@ -121,10 +121,24 @@ void append_to_dstr(dstr_t **dst, char c) { | ||||
|   strncpy(str, (*dst)->buf, (*dst)->size); | ||||
|   str[(*dst)->size] = c; | ||||
|  | ||||
|   update_dstr(dst, str); | ||||
|   dstr_update(dst, str); | ||||
| } | ||||
|  | ||||
| void empty_dstr(dstr_t *str) { | ||||
| void dstr_resize(dstr_t **str) { | ||||
|   u64 capacity = (*str)->size; | ||||
|  | ||||
|   dstr_t *tmp = (dstr_t *)realloc(*str, sizeof(dstr_t) + capacity + 1); | ||||
|  | ||||
|   if (!tmp) { | ||||
|     return; | ||||
|   } | ||||
|  | ||||
|   tmp->capacity = capacity; | ||||
|  | ||||
|   *str = tmp; | ||||
| } | ||||
|  | ||||
| void dstr_clear(dstr_t *str) { | ||||
|   if (!str || str->size == 0) { | ||||
|     return; | ||||
|   } | ||||
| @@ -133,7 +147,7 @@ void empty_dstr(dstr_t *str) { | ||||
|   str->size = 0; | ||||
| } | ||||
|  | ||||
| void print_dstr(const dstr_t *str) { | ||||
| void dstr_print(const dstr_t *str) { | ||||
|   if (!str) { | ||||
|     return; | ||||
|   } | ||||
| @@ -156,3 +170,5 @@ u64 dstr_capacity(const dstr_t *str) { | ||||
|  | ||||
|   return str->capacity; | ||||
| } | ||||
|  | ||||
| const char *dstr_to_cstr(const dstr_t *str) { return str->buf; } | ||||
|   | ||||
| @@ -408,7 +408,7 @@ lexer_state_t handle_array(lexer_t *lexer, char input) { | ||||
| } | ||||
|  | ||||
| lexer_state_t handle_key(lexer_t *lexer, char input) { | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   return LEXER_STATE_STRING; | ||||
| } | ||||
| @@ -417,7 +417,7 @@ lexer_state_t handle_value(lexer_t *lexer, char input) { | ||||
|   if (isspace(input)) { | ||||
|     return LEXER_STATE_VALUE; | ||||
|   } else if (isdigit(input) && input != '0') { | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_NUMBER; | ||||
|   } | ||||
| @@ -428,7 +428,7 @@ lexer_state_t handle_value(lexer_t *lexer, char input) { | ||||
|  | ||||
|     return LEXER_STATE_STRING; | ||||
|   case '0': | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_DECIMAL; | ||||
|   case '{': | ||||
| @@ -449,14 +449,14 @@ lexer_state_t handle_value(lexer_t *lexer, char input) { | ||||
| lexer_state_t handle_string(lexer_t *lexer, char input) { | ||||
|   switch (input) { | ||||
|   case '\\': | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_ESCAPE_SEQUENCE; | ||||
|   case '"': | ||||
|     return LEXER_STATE_STRING_END; | ||||
|   } | ||||
|  | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   return LEXER_STATE_STRING; | ||||
| } | ||||
| @@ -466,7 +466,7 @@ lexer_state_t handle_string_end(lexer_t *lexer, char input) { | ||||
|     return LEXER_STATE_STRING_END; | ||||
|   } | ||||
|  | ||||
|   empty_dstr(lexer->current_string); | ||||
|   dstr_clear(lexer->current_string); | ||||
|  | ||||
|   lexer->current = stack_pop(&(lexer->stack)); | ||||
|  | ||||
| @@ -489,7 +489,7 @@ lexer_state_t handle_string_end(lexer_t *lexer, char input) { | ||||
| } | ||||
|  | ||||
| lexer_state_t handle_escape_sequence(lexer_t *lexer, char input) { | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   switch (input) { | ||||
|   case '"': | ||||
| @@ -510,7 +510,7 @@ lexer_state_t handle_escape_sequence(lexer_t *lexer, char input) { | ||||
|  | ||||
| lexer_state_t handle_unicode_sequence(lexer_t *lexer, char input) { | ||||
|   append_to_lex_str(&(lexer->codepoint), input); | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   if (!ishex(input)) { | ||||
|     clear_lex_str(&(lexer->codepoint)); | ||||
| @@ -526,7 +526,7 @@ lexer_state_t handle_unicode_sequence(lexer_t *lexer, char input) { | ||||
| } | ||||
|  | ||||
| lexer_state_t handle_decimal(lexer_t *lexer, char input) { | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   if (input == '.') { | ||||
|     return LEXER_STATE_FRACTION; | ||||
| @@ -537,19 +537,19 @@ lexer_state_t handle_decimal(lexer_t *lexer, char input) { | ||||
|  | ||||
| lexer_state_t handle_number(lexer_t *lexer, char input) { | ||||
|   if (isdigit(input)) { | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_NUMBER; | ||||
|   } else if (input == '.') { | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_FRACTION; | ||||
|   } else if (input == '}' || input == ']') { | ||||
|     empty_dstr(lexer->current_string); | ||||
|     dstr_clear(lexer->current_string); | ||||
|  | ||||
|     return handle_collection_end(lexer, input); | ||||
|   } else if (input == ',') { | ||||
|     empty_dstr(lexer->current_string); | ||||
|     dstr_clear(lexer->current_string); | ||||
|  | ||||
|     return lexer->stack.stack[lexer->stack.size - 1]; | ||||
|   } else if (isspace(input)) { | ||||
| @@ -561,19 +561,19 @@ lexer_state_t handle_number(lexer_t *lexer, char input) { | ||||
|  | ||||
| lexer_state_t handle_fraction(lexer_t *lexer, char input) { | ||||
|   if (isdigit(input)) { | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_FRACTION; | ||||
|   } else if (input == '}' || input == ']') { | ||||
|     empty_dstr(lexer->current_string); | ||||
|     dstr_clear(lexer->current_string); | ||||
|  | ||||
|     return handle_collection_end(lexer, input); | ||||
|   } else if (input == 'e' || input == 'E') { | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_EXPONENT; | ||||
|   } else if (input == ',') { | ||||
|     empty_dstr(lexer->current_string); | ||||
|     dstr_clear(lexer->current_string); | ||||
|  | ||||
|     return lexer->stack.stack[lexer->stack.size - 1]; | ||||
|   } else if (isspace(input)) { | ||||
| @@ -584,7 +584,7 @@ lexer_state_t handle_fraction(lexer_t *lexer, char input) { | ||||
| } | ||||
|  | ||||
| lexer_state_t handle_exponent(lexer_t *lexer, char input) { | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   if (isdigit(input)) { | ||||
|     return LEXER_STATE_POWER; | ||||
| @@ -596,7 +596,7 @@ lexer_state_t handle_exponent(lexer_t *lexer, char input) { | ||||
| } | ||||
|  | ||||
| lexer_state_t handle_exp_sign(lexer_t *lexer, char input) { | ||||
|   append_to_dstr(&(lexer->current_string), input); | ||||
|   dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|   if (isdigit(input)) { | ||||
|     return LEXER_STATE_POWER; | ||||
| @@ -607,15 +607,15 @@ lexer_state_t handle_exp_sign(lexer_t *lexer, char input) { | ||||
|  | ||||
| lexer_state_t handle_power(lexer_t *lexer, char input) { | ||||
|   if (isdigit(input)) { | ||||
|     append_to_dstr(&(lexer->current_string), input); | ||||
|     dstr_append(&(lexer->current_string), input); | ||||
|  | ||||
|     return LEXER_STATE_POWER; | ||||
|   } else if (input == '}' || input == ']') { | ||||
|     empty_dstr(lexer->current_string); | ||||
|     dstr_clear(lexer->current_string); | ||||
|  | ||||
|     return handle_collection_end(lexer, input); | ||||
|   } else if (input == ',') { | ||||
|     empty_dstr(lexer->current_string); | ||||
|     dstr_clear(lexer->current_string); | ||||
|  | ||||
|     return lexer->stack.stack[lexer->stack.size - 1]; | ||||
|   } else if (isspace(input)) { | ||||
| @@ -626,7 +626,7 @@ lexer_state_t handle_power(lexer_t *lexer, char input) { | ||||
| } | ||||
|  | ||||
| lexer_state_t handle_number_end(lexer_t *lexer, char input) { | ||||
|   empty_dstr(lexer->current_string); | ||||
|   dstr_clear(lexer->current_string); | ||||
|  | ||||
|   if (isspace(input)) { | ||||
|     return LEXER_STATE_NUMBER_END; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user