- 实现了IR的线性转储功能,包括类型、节点、基本块和函数的线性表示 - 添加了scc_ir_dump_ctx_init函数用于初始化转储上下文 - 为AST函数类型添加了变参标记注释说明 - 改进了AST转储中函数类型的参数和返回值显示逻辑 - 统一了AST解析中节点类型的声明为通用的scc_ast_node_t指针类型 fix(lexer): 改进词法分析器错误信息显示 - 在不支持字符的错误信息中添加十六进制编码显示 - 便于调试时识别特殊不可打印字符
27 lines
879 B
C
27 lines
879 B
C
#ifndef __SCC_IR_DUMP_H__
|
|
#define __SCC_IR_DUMP_H__
|
|
|
|
#include "ir_ctx.h"
|
|
#include "ir_def.h"
|
|
#include <tree_dump.h>
|
|
|
|
typedef struct {
|
|
scc_ir_cprog_ctx_t *ir_ctx;
|
|
scc_ir_cprog_t *cprog;
|
|
scc_tree_dump_ctx_t *dump_ctx;
|
|
} scc_ir_dump_ctx_t;
|
|
|
|
void scc_ir_dump_ctx_init(scc_ir_dump_ctx_t *ctx,
|
|
scc_tree_dump_ctx_t *tree_dump, scc_ir_cprog_t *cprog,
|
|
scc_ir_cprog_ctx_t *ir_ctx);
|
|
|
|
void scc_ir_dump_node(scc_ir_dump_ctx_t *ctx, scc_ir_node_ref_t node_ref);
|
|
void scc_ir_dump_type(scc_ir_dump_ctx_t *ctx, scc_ir_type_ref_t type_ref);
|
|
void scc_ir_dump_bblock(scc_ir_dump_ctx_t *ctx, scc_ir_bblock_ref_t bblock_ref);
|
|
void scc_ir_dump_func(scc_ir_dump_ctx_t *ctx, scc_ir_func_ref_t func_ref);
|
|
void scc_ir_dump_cprog(scc_ir_dump_ctx_t *ctx);
|
|
|
|
void scc_ir_dump_cprog_linear(scc_ir_dump_ctx_t *ctx);
|
|
|
|
#endif /* __SCC_IR_DUMP_H__ */
|