wip: working on analyzer

- Feat: implement return analyzer
- Fix: add block return check if inside function
This commit is contained in:
samsonium
2026-10-26 22:20:09 +03:00
parent a70ad011f3
commit d7630dbb6a
4 changed files with 127 additions and 0 deletions
+6
View File
@@ -31,6 +31,11 @@ typedef struct fzl_an_ctx
struct fzl_an_ctx *parent;
fzl_an_ctx_type_t type;
union
{
fzl_node_t *fn;
};
} fzl_an_ctx_t;
// Analyzer descriptor
@@ -73,6 +78,7 @@ fzl_an_res_t analyze_identifier(fzl_analyzer_t *analyzer, fzl_node_t *id);
fzl_an_res_t analyze_conditional(fzl_analyzer_t *analyzer, fzl_node_t *cond);
fzl_an_res_t analyze_function(fzl_analyzer_t *analyzer, fzl_node_t *fn_node);
fzl_an_res_t analyze_block(fzl_analyzer_t *analyzer, fzl_node_t *block_node);
fzl_an_res_t analyze_return(fzl_analyzer_t *analyzer, fzl_node_t *ret_node);
fzl_an_ctx_t *an_nest_ctx(fzl_analyzer_t *analyzer, fzl_an_ctx_type_t type);
fzl_an_ctx_t *an_fin_ctx(fzl_analyzer_t *analyzer);