From ba9f88879dc90e7d2939bed53ee95c8ddb8acc96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Sun, 12 Oct 2025 09:45:29 +0200 Subject: [PATCH] work in progess --- Makefile | 6 +++--- Makefile.am | 6 +++--- Makefile.in | 6 +++--- libxtools/clcomp.c | 40 ++++++++++++++++++++++------------------ libxtools/clcomp.h | 14 ++++++-------- libxtools/clcomp_test.c | 13 ++++++++++--- libxtools/clconfig.c | 9 +++++---- 7 files changed, 52 insertions(+), 42 deletions(-) diff --git a/Makefile b/Makefile index 56dd225..66145e3 100644 --- a/Makefile +++ b/Makefile @@ -923,11 +923,11 @@ uninstall-am: uninstall-binPROGRAMS uninstall-sbinPROGRAMS .PRECIOUS: Makefile -test: libxtools/cllexer_test +test:: libxtools/cllexer_test cd libxtools && ./cllexer_test -#test: libxtools/clcomp_test -# cd libxtools && ./clcomp_test +test:: libxtools/clcomp_test + cd libxtools && ./clcomp_test #test: libxtools/clconfig_test # cd libxtools && ./clconfig_test diff --git a/Makefile.am b/Makefile.am index a75904a..cd74ad0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -63,11 +63,11 @@ noinst_PROGRAMS += libxtools/cllexer_test libxtools_cllexer_test_SOURCES = libxtools/cllexer_test.c libxtools_cllexer_test_LDADD = $(libxtools_NAME) -test: libxtools/cllexer_test +test:: libxtools/cllexer_test cd libxtools && ./cllexer_test -#test: libxtools/clcomp_test -# cd libxtools && ./clcomp_test +test:: libxtools/clcomp_test + cd libxtools && ./clcomp_test #test: libxtools/clconfig_test # cd libxtools && ./clconfig_test diff --git a/Makefile.in b/Makefile.in index 8f633d6..c16dcad 100644 --- a/Makefile.in +++ b/Makefile.in @@ -923,11 +923,11 @@ uninstall-am: uninstall-binPROGRAMS uninstall-sbinPROGRAMS .PRECIOUS: Makefile -test: libxtools/cllexer_test +test:: libxtools/cllexer_test cd libxtools && ./cllexer_test -#test: libxtools/clcomp_test -# cd libxtools && ./clcomp_test +test:: libxtools/clcomp_test + cd libxtools && ./clcomp_test #test: libxtools/clconfig_test # cd libxtools && ./clconfig_test diff --git a/libxtools/clcomp.c b/libxtools/clcomp.c index 90626e4..c481202 100644 --- a/libxtools/clcomp.c +++ b/libxtools/clcomp.c @@ -11,43 +11,47 @@ #include #include -void clcomp_init(clcomp_t* lexer, char** argv, int argc) { - lexer->argv = argv; - lexer->argc = argc; - lexer->argn = 1; - if (lexer->argc > lexer->argn) { - cllexer_init(&(lexer->alex), lexer->argv[lexer->argn]); +void clcomp_init(clcomp_t* comp, vmapper_t* mapper, char** argv, int argc) { + comp->argv = argv; + comp->argc = argc; + comp->argn = 1; + comp->mapper = mapper; + if (comp->argc > comp->argn) { + cllexer_init(&(comp->lexer), comp->argv[comp->argn]); } } -int clcomp_gettok(clcomp_t* lexer, char* token) { +int clcomp_gettok(clcomp_t* comp, char* token) { - if (lexer->argn > lexer->argc) { + if (comp->argn > comp->argc) { strcpy(token, "EOF"); return TOKEN_ENDF; } - int toktype = cllexer_gettok(&(lexer->alex), token); - if (toktype == TOKEN_ENDF && lexer->argn != lexer->argc) { - lexer->argn++; - cllexer_init(&(lexer->alex), lexer->argv[lexer->argn]); + int toktype = cllexer_gettok(&(comp->lexer), token); + if (toktype == TOKEN_ENDF && comp->argn != comp->argc) { + comp->argn++; + cllexer_init(&(comp->lexer), comp->argv[comp->argn]); strcpy(token, "space"); return TOKEN_SPACE; } - return toktype; } -/* -int clcomp_parse(clcomp_t* lexer, char* token) { + +int clcomp_parse(clcomp_t* comp) { + + char token[1024]; + int toktype = TOKEN_NULL; + int i = 0; while (toktype != TOKEN_ENDF) { - toktype = cllexer_gettok(&lex, token); + toktype = clcomp_gettok(comp, token); printf("cllexer_gettok res: %d: %d [%s]\n", i, toktype, token); i++; } - -*/ + return 0; +} void clcomp_destroy(clcomp_t* clcomp) { diff --git a/libxtools/clcomp.h b/libxtools/clcomp.h index 875c36a..c1fd663 100644 --- a/libxtools/clcomp.h +++ b/libxtools/clcomp.h @@ -7,21 +7,19 @@ #ifndef GCLEXER_H_QWERTY #define GCLEXER_H_QWERTY -//#include -//#include -//#include - #include +#include typedef struct { char** argv; int argc; int argn; - cllexer_t alex; + cllexer_t lexer; + vmapper_t* mapper; } clcomp_t; -void clcomp_init(clcomp_t* lexer, char** argv, int argc); -int clcomp_gettok(clcomp_t* lexer, char* token); +void clcomp_init(clcomp_t* clcomp, vmapper_t* mapper, char** argv, int argc); +int clcomp_gettok(clcomp_t* clcomp, char* token); +int clcomp_parse(clcomp_t* clcomp); void clcomp_destroy(clcomp_t* clcomp); - #endif diff --git a/libxtools/clcomp_test.c b/libxtools/clcomp_test.c index 90c044f..48226bb 100644 --- a/libxtools/clcomp_test.c +++ b/libxtools/clcomp_test.c @@ -10,6 +10,7 @@ #include #include +#include int main(int argc, char **argv) { (void)argc; @@ -18,9 +19,15 @@ int main(int argc, char **argv) { char*_argv[] = { argv[0], "--qwerty=12345", "--foo=bar" }; int _argc = 2; - clcomp_t lex; - clcomp_init(&lex, _argv, _argc); + vmapper_t vmapper; + vmapper_init(&vmapper); + clcomp_t clcomp; + clcomp_init(&clcomp, &vmapper, _argv, _argc); + + clcomp_parse(&clcomp); + +/* char token[1024]; int toktype = TOKEN_NULL; int i = 0; @@ -29,6 +36,6 @@ int main(int argc, char **argv) { printf("clcomp_gettok res: %d: %d [%s]\n", i, toktype, token); i++; } - +*/ return 0; } diff --git a/libxtools/clconfig.c b/libxtools/clconfig.c index 00bb9c9..1e9d3ad 100644 --- a/libxtools/clconfig.c +++ b/libxtools/clconfig.c @@ -11,7 +11,7 @@ #include void clconfig_init(clconfig_t* clconfig, int argc, char **argv) { - clcomp_init(&(clconfig->lexer), argv, argc); + //clcomp_init(&(clconfig->lexer), argv, argc); vmapper_init(&(clconfig->mapper)); } @@ -44,11 +44,12 @@ int __main(int argc, char **argv) { (void)argc; (void)argv; +/* char*_argv[] = { argv[0], "--qwerty=-num12345", "--foo=-bar" }; int _argc = 2; - clcomp_t lex; - clcomp_init(&lex, _argv, _argc); + clcomp_t clcomp; + clcomp_init(&clcomp, _argv, _argc); char token[1024]; int toktype = TOKEN_NULL; @@ -58,6 +59,6 @@ int __main(int argc, char **argv) { printf("%d: %d [%s]\n", i, toktype, token); i++; } - +*/ return 0; }