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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user