refactor: 重构 ModuleNode 类并增强其文档注释
- 重新组织类的结构,使其更加清晰和易于理解- 增加了对模块节点包含内容的详细注释,包括全局变量、结构体和函数定义 - 优化了 toString 方法的实现,提高了代码可读性 - 补充了对结构体定义列表的处理
This commit is contained in:
parent
49cb89c9f2
commit
fea8e14245
@ -7,44 +7,62 @@ import java.util.List;
|
||||
import java.util.StringJoiner;
|
||||
|
||||
/**
|
||||
* 表示模块定义的 AST 节点。
|
||||
* 一个模块通常由模块名、导入语句列表和函数定义列表组成。
|
||||
* {@code ModuleNode}
|
||||
* <p>
|
||||
* 抽象语法树(AST)顶层节点 —— 模块定义。
|
||||
* <ul>
|
||||
* <li>代表一个完整的源码模块/文件(如 main, math 等)。</li>
|
||||
* <li>包含模块名、导入列表、全局变量、结构体和函数定义等全部模块级内容。</li>
|
||||
* <li>是整个编译流程的入口节点。</li>
|
||||
* </ul>
|
||||
* </p>
|
||||
*
|
||||
* @param name 模块名称。
|
||||
* @param imports 模块导入列表,每个导入是一个 {@link ImportNode}。
|
||||
* @param functions 模块中的函数列表,每个函数是一个 {@link FunctionNode}。
|
||||
* @param context 节点上下文信息(包含行号、列号等)
|
||||
* @param name 模块名称
|
||||
* @param imports 导入模块列表
|
||||
* @param globals 全局变量/常量声明
|
||||
* @param structs 结构体定义列表
|
||||
* @param functions 函数定义列表
|
||||
* @param context 源代码位置信息
|
||||
*/
|
||||
public record ModuleNode(
|
||||
String name,
|
||||
List<ImportNode> imports,
|
||||
List<DeclarationNode> globals,
|
||||
List<StructNode> structs,
|
||||
List<FunctionNode> functions,
|
||||
NodeContext context
|
||||
) implements Node {
|
||||
|
||||
/**
|
||||
* 返回模块节点的字符串表示形式,包含模块名、导入模块列表和函数列表。
|
||||
* 返回模块节点的简要字符串表示(用于日志、调试)。
|
||||
* 列出模块名、导入、全局变量、结构体、函数等简明内容。
|
||||
*
|
||||
* @return 模块的简洁字符串表示,用于调试和日志输出。
|
||||
* @return 字符串形式,如
|
||||
* Module(name=main, imports=[math], globals=[int x], structs=[Foo], functions=[bar])
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
StringJoiner importJoiner = new StringJoiner(", ");
|
||||
for (ImportNode imp : imports) {
|
||||
importJoiner.add(imp.moduleName());
|
||||
}
|
||||
StringJoiner globalJoiner = new StringJoiner(", ");
|
||||
for (DeclarationNode g : globals) {
|
||||
globalJoiner.add(g.getType() + " " + g.getName());
|
||||
}
|
||||
StringJoiner funcJoiner = new StringJoiner(", ");
|
||||
for (FunctionNode fn : functions) {
|
||||
funcJoiner.add(fn.name());
|
||||
}
|
||||
return "Module(name=" + name
|
||||
+ ", imports=[" + importJoiner + "]"
|
||||
+ ", globals=[" + globalJoiner + "]"
|
||||
+ ", functions=[" + funcJoiner + "])";
|
||||
// 1) 导入模块列表字符串
|
||||
StringJoiner impJ = new StringJoiner(", ");
|
||||
imports.forEach(i -> impJ.add(i.moduleName()));
|
||||
|
||||
// 2) 全局变量/常量列表字符串
|
||||
StringJoiner globJ = new StringJoiner(", ");
|
||||
globals.forEach(g -> globJ.add(g.getType() + " " + g.getName()));
|
||||
|
||||
// 3) 结构体名列表字符串
|
||||
StringJoiner structJ = new StringJoiner(", ");
|
||||
structs.forEach(s -> structJ.add(s.name()));
|
||||
|
||||
// 4) 函数名列表字符串
|
||||
StringJoiner funcJ = new StringJoiner(", ");
|
||||
functions.forEach(f -> funcJ.add(f.name()));
|
||||
|
||||
// 5) 综合输出
|
||||
return "Module(name=" + name +
|
||||
", imports=[" + impJ + "]" +
|
||||
", globals=[" + globJ + "]" +
|
||||
", structs=[" + structJ + "]" +
|
||||
", functions=[" + funcJ + "])";
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user