wip: working on analyzer

- Feat: add `nest_ctx` and `fin_ctx` fns for working with context and
environment
- Feat: add block analyzer
- Feat: add conditional statement analyzer
This commit is contained in:
samsonium
2026-10-26 21:34:54 +03:00
parent 62ae05b4cd
commit a70ad011f3
9 changed files with 165 additions and 35 deletions
+6 -9
View File
@@ -67,7 +67,11 @@ void fzl_analyze(fzl_analyzer_t *analyzer)
if (!analyzer)
return;
analyzer->symbols[analyzer->symbols_top++] = fzl_mksymt();
if (an_nest_ctx(analyzer, FZL_AN_CTX_TYPE_UNNECESSARY) == NULL)
{
an_push_error(analyzer, NULL, "failed to make global context");
return;
}
fzl_node_t *current = analyzer->root;
while (current != NULL)
@@ -79,14 +83,7 @@ void fzl_analyze(fzl_analyzer_t *analyzer)
current = current->next;
}
if (analyzer->symbols_top < 0)
{
an_push_error(analyzer, NULL,
"undefined error (early finish of global environment)");
return;
}
fzl_freesymt(analyzer->symbols[--analyzer->symbols_top]);
an_fin_ctx(analyzer);
}
void fzl_freeanalyzer(fzl_analyzer_t *analyzer)