#ifndef INTERNALS_ANALYZER_H #define INTERNALS_ANALYZER_H #include #include #include #include #include extern char an_problem[256]; bool an_is_compatible(fzl_type_t a, fzl_type_t b, char *ac, char *bc); char *an_typetostr(fzl_type_t type, char *classname); fzl_type_t an_toktotype(fzl_analyzer_t *analyzer, fzl_token_t *tok, bool *sym_found); fzl_an_res_t analyze_common(fzl_analyzer_t *analyzer, fzl_node_t *node); fzl_an_res_t analyze_call(fzl_analyzer_t *analyzer, fzl_node_t *call_node); 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_res_t analyze_class(fzl_analyzer_t *analyzer, fzl_node_t *class_node); fzl_an_res_t analyze_field(fzl_analyzer_t *analyzer, fzl_node_t *field); fzl_an_res_t analyze_declaration(fzl_analyzer_t *analyzer, fzl_node_t *decl); fzl_an_res_t analyze_construct(fzl_analyzer_t *analyzer, fzl_node_t *construct); fzl_an_res_t analyze_loop(fzl_analyzer_t *analyzer, fzl_node_t *loop_node); fzl_an_res_t analyze_break(fzl_analyzer_t *analyzer, fzl_node_t *break_node); fzl_an_res_t analyze_binmath(fzl_analyzer_t *analyzer, fzl_node_t *bin_node); fzl_an_res_t analyze_unarymath(fzl_analyzer_t *analyzer, fzl_node_t *unary); fzl_an_res_t analyze_condition(fzl_analyzer_t *analyzer, fzl_node_t *cond_node); fzl_an_res_t analyze_unarycond(fzl_analyzer_t *analyzer, fzl_node_t *unary); fzl_an_res_t analyze_assign(fzl_analyzer_t *analyzer, fzl_node_t *assign_node); fzl_an_res_t analyze_strfmt(fzl_analyzer_t *analyzer, fzl_node_t *strfmt_node); fzl_an_res_t analyze_typedef(fzl_analyzer_t *analyzer, fzl_node_t *td_node); fzl_an_res_t analyze_struct(fzl_analyzer_t *analyzer, fzl_node_t *struct_node); fzl_an_res_t analyze_ref(fzl_analyzer_t *analyzer, fzl_node_t *ref_node); fzl_an_res_t analyze_externfn(fzl_analyzer_t *analyzer, fzl_node_t *externfn); fzl_an_res_t analyze_extern(fzl_analyzer_t *analyzer, fzl_node_t *extern_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); #endif // INTERNALS_ANALYZER_H