/* * * Copyright 2023 Oleg Borodin * */ #include #include #include #include #include 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; }