Files
helmetc/libxtools/clcomp.c
Олег Бородин ba9f88879d work in progess
2025-10-12 09:45:29 +02:00

60 lines
1.3 KiB
C

/*
*
* Copyright 2023 Oleg Borodin <borodin@unix7.org>
*
*/
#include <string.h>
#include <stdbool.h>
#include <stdio.h>
#include <cllexer.h>
#include <clcomp.h>
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* comp, char* token) {
if (comp->argn > comp->argc) {
strcpy(token, "EOF");
return TOKEN_ENDF;
}
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* comp) {
char token[1024];
int toktype = TOKEN_NULL;
int i = 0;
while (toktype != TOKEN_ENDF) {
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) {
(void)clcomp;
}