feat(ir): 添加线性IR转储功能并改进AST转储

- 实现了IR的线性转储功能,包括类型、节点、基本块和函数的线性表示
- 添加了scc_ir_dump_ctx_init函数用于初始化转储上下文
- 为AST函数类型添加了变参标记注释说明
- 改进了AST转储中函数类型的参数和返回值显示逻辑
- 统一了AST解析中节点类型的声明为通用的scc_ast_node_t指针类型

fix(lexer): 改进词法分析器错误信息显示

- 在不支持字符的错误信息中添加十六进制编码显示
- 便于调试时识别特殊不可打印字符
This commit is contained in:
zzy
2026-02-13 09:56:42 +08:00
parent 191cdcef53
commit ffee07a03d
6 changed files with 353 additions and 32 deletions

View File

@@ -158,10 +158,10 @@ static scc_ast_stmt_t *parse_compound_statement(scc_parser_t *parser) {
while (!scc_parse_consume_if(parser->lex_stream, SCC_TOK_R_BRACE)) {
/// TODO
// scc_parse_is_decl();
scc_ast_node_type_t *ret = null;
ret = (scc_ast_node_type_t *)scc_parse_declaration(parser);
scc_ast_node_t *ret = null;
ret = (scc_ast_node_t *)scc_parse_declaration(parser);
if (ret == null) {
ret = (scc_ast_node_type_t *)scc_parse_statement(parser);
ret = (scc_ast_node_t *)scc_parse_statement(parser);
}
if (ret == null) {
LOG_ERROR("Invalid statement");