From 359f88fb794d035b711656ad001d6f5eeda53c61 Mon Sep 17 00:00:00 2001 From: german Date: Wed, 4 Mar 2026 17:15:27 +0400 Subject: [PATCH] Code rewiev 1 --- asm-savers.h | 26 +++++++++++++++++++++++--- ntsys | Bin 26744 -> 26864 bytes ntsys-assembler.h | 10 ++++++---- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/asm-savers.h b/asm-savers.h index b69683a..c807612 100644 --- a/asm-savers.h +++ b/asm-savers.h @@ -1,15 +1,20 @@ #if (!defined(NTSYS__S_ASSEMBLER_H___)) #define NTSYS__S_ASSEMBLER_H___ +#define create_ntsys_asm_parser(cache, str, table) ((ntsys_argument_parser_t){(cache), (str), (table)}) #define create_ntsys_asm_save(ss) ((ntsys_asm_save_t){(ss), (ss)}) #define create_ntsys_asm_cache(ss) ((ntsys_asm_cache_t)&(ss)) #define ntsys_asm_arg_new(str, __cache) ((ntsys_get_arg((__cache))) && ((str) = __cache->string)) +#define ntsys_asm_arg_or_zero_len_str(str, __cache) ((((ntsys_get_arg((__cache))) && ((str) = __cache->string)) == NULL) ? ("") : (str)) + +/* + * #define __SPACE_SHIFT while (is_space(st[pos])) { pos ++; } + * #define __NEXT_ARG {__e_byte_t isStr = 0;while (!is_space(st[save]) || isStr == 1) { if (st[save] == '"' && st[save - 1] != '\\') {isStr = !isStr;}save ++; }}while (is_space(st[save])) { save ++; }{size_t n_p = save;__e_byte_t isStr = 0;while (!is_space(st[n_p]) || isStr == 1) { if (st[n_p] == '"' && st[n_p - 1] != '\\') {isStr = !isStr;}n_p ++; }st[n_p] = '\0';} + * #define get_mem_pos() *mem_pos = ftell(fp) == 0 ? 0 : ftell(fp) - 1; + */ #define __READ_FILE_WITH_EOF_OR_LN ((c = getc(fp)) != EOF && c != '\n' && c != '\r') #define is_space(c) (c >= 0 && c <= 32) -#define __SPACE_SHIFT while (is_space(st[pos])) { pos ++; } -#define __NEXT_ARG {__e_byte_t isStr = 0;while (!is_space(st[save]) || isStr == 1) { if (st[save] == '"' && st[save - 1] != '\\') {isStr = !isStr;}save ++; }}while (is_space(st[save])) { save ++; }{size_t n_p = save;__e_byte_t isStr = 0;while (!is_space(st[n_p]) || isStr == 1) { if (st[n_p] == '"' && st[n_p - 1] != '\\') {isStr = !isStr;}n_p ++; }st[n_p] = '\0';} -#define get_mem_pos() *mem_pos = ftell(fp) == 0 ? 0 : ftell(fp) - 1; char* ntsys_get_str(char* ptr, FILE* fp) { if (ptr != NULL) { @@ -39,6 +44,8 @@ char* ntsys_get_str(char* ptr, FILE* fp) { return ptr; } +#undef __READ_FILE_WITH_EOF_OR_LN + typedef struct { char* string; char* cache; @@ -119,4 +126,17 @@ char* ntsys_get_arg(ntsys_asm_cache_t save) { return str; } +typedef struct { + ntsys_asm_cache_t cache; + char* string; + char** table; +} ntsys_argument_parser_t; + +int ntsys_run_asm_parser(ntsys_argument_parser_t parser) { + ntsys_asm_arg_new(parser.string, parser.cache); + return EXIT_SUCCESS; +} + +#undef is_space + #endif \ No newline at end of file diff --git a/ntsys b/ntsys index fc8c00a2f98abb2855cffeb5acd4837d54b95381..ace987564ff0fb162e6e57a4e5123f667327444a 100755 GIT binary patch delta 6988 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 CcAD-0 delta 6868 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

B3 diff --git a/ntsys-assembler.h b/ntsys-assembler.h index f393dcb..033568a 100644 --- a/ntsys-assembler.h +++ b/ntsys-assembler.h @@ -5,13 +5,15 @@ #include "asm-savers.h" +char* ntsys_asm_table[] = { + "print" +}; + int ntsys_asm_from_string(size_t* mempos, char* str, FILE* fp) { ntsys_asm_save_t __save = create_ntsys_asm_save(str); ntsys_asm_cache_t __cache = create_ntsys_asm_cache(__save); - while (ntsys_asm_arg_new(str, __cache)) { - puts(str); - } - return EXIT_SUCCESS; + ntsys_argument_parser_t __parser = create_ntsys_asm_parser(__cache, str, ntsys_asm_table); + return ntsys_run_asm_parser(__parser); } int ntsys_compile_asm(char* filename, char* asm_out) {