feat(parser): 添加语义分析回调清理函数并完善资源管理

添加了 scc_sema_drop 函数用于清理语义分析回调结构,
并在主程序中正确初始化和释放语义分析回调,
确保资源得到适当管理。

同时修复了AST转储中的缩进问题,在函数调用括号前添加正确的缩进,
并修正了测试代码中的结构体字段初始化顺序。
This commit is contained in:
zzy
2026-03-11 22:07:52 +08:00
parent e6511c508c
commit 30ac2de73b
5 changed files with 15 additions and 5 deletions

View File

@@ -271,14 +271,17 @@ int main(int argc, const char **argv, const char **envp) {
scc_lexer_tok_ring_t *tok_ring = scc_pproc_to_ring(&pproc, 8, false, false);
scc_parser_t parser;
scc_parser_init(&parser, tok_ring, null);
scc_sema_callbacks_t sema_callbacks;
scc_sema_init(&sema_callbacks);
scc_parser_init(&parser, tok_ring, &sema_callbacks);
scc_ast_translation_unit_t *translation_unit =
scc_parse_translation_unit(&parser);
// scc_parser_drop(&parser);
// scc_pproc_drop(&pproc);
// scc_lexer_drop(&lexer);
// scc_sstream_drop(&sstream);
scc_sema_drop(&sema_callbacks);
scc_parser_drop(&parser);
scc_pproc_drop(&pproc);
scc_lexer_drop(&lexer);
scc_sstream_drop(&sstream);
if (config.emit_ast) {
scc_tree_dump_ctx_t tree_dump;