Code rewiev 1

This commit is contained in:
german 2026-03-04 17:15:27 +04:00
parent 987c93d83d
commit 359f88fb79
3 changed files with 29 additions and 7 deletions

View File

@ -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

BIN
ntsys

Binary file not shown.

View File

@ -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) {