664 Commits

Author SHA1 Message Date
981a1eacdb feat: 增强 VMProgramBuilder 功能并优化代码结构
- 优化类注释,明确 VMProgramBuilder 的职责和功能
- 重构部分方法名称,提高代码可读性
- 添加 super 调用支持和更灵活的符号匹配机制
- 优化 CALL 和 BRANCH指令的修补逻辑
- 添加辅助方法 lastSegment,提高代码复用性
2025-09-01 12:18:36 +08:00
9e322f3d87 refactor: 优化 IRProgram 构建过程并完善结构体布局处理
- 简化 buildProgram 方法的注释,使流程描述更加清晰
-重写 preloadStructLayouts 方法,增加对结构体继承的支持
- 调整 globalConstPreload 方法的注释,明确其功能
- 在 buildScriptMainFunction 方法中添加占位符,避免依赖真实位置信息
2025-09-01 11:03:21 +08:00
04b43cbd5a refactor: 将 getStructLayout 方法改为静态方法
- 修改了 IRBuilderScope 类中的 getStructLayout 方法,将其从实例方法改为静态方法
2025-09-01 10:50:39 +08:00
0cb8abde80 chore: 移除 Demo31.run.xml 中的调试参数 2025-09-01 10:50:10 +08:00
d258297609 feat: 支持结构体继承
- 添加对结构体继承的支持,允许使用 "extends" 关键字定义父结构体
- 修改 StructNode 构造函数以支持父结构体名称参数
- 优化结构体解析逻辑,处理可选的继承语句
2025-09-01 09:23:21 +08:00
426452f63f feat: 支持结构体单继承并优化签名注册逻辑
- 增加结构体单继承支持,子类可继承父类的字段和方法
- 优化函数和方法签名注册流程,移除不必要的降级处理
- 修复结构体继承中的错误处理和字段/方法复制逻辑
2025-09-01 09:23:06 +08:00
8ff103e105 feat: 为结构体添加继承功能
- 在 StructNode 中添加 parent 参数,用于表示父类名称
- 更新 toString 方法以包含 parent 信息
- 优化类注释,移除冗余信息并增加对继承特性的说明
2025-08-31 18:37:42 +08:00
8bc431091c feat: 添加 extends 关键字 2025-08-31 18:34:40 +08:00
ce2b480e90 chore: 添加 Demo31运行配置 2025-08-31 17:56:18 +08:00
9f7628aded test: 添加类继承演示示例 2025-08-31 17:55:49 +08:00
bd37142a4b chore: 添加 Demo30运行配置 2025-08-31 17:38:29 +08:00
f0e3bfe05c test: 添加 Demo30 2025-08-31 17:38:23 +08:00
c99614869f refactor: 重构值拷贝语义的指令生成逻辑
- 移除类型无法推断时默认采用 int 方案的逻辑
- 通过构造 "src + 0" 的形式,触发 Peephole 优化折叠成 MOV
- 优化了不同类型的数据处理逻辑,提高代码可读性和可维护性
2025-08-31 17:31:53 +08:00
67d1949a25 refactor: 移除未使用的作者和版本注释 2025-08-31 17:10:19 +08:00
5ec4f9ec6a test: 修改 Demo29 适配最新语法 2025-08-31 17:03:00 +08:00
a57d666241 feat: 改进 CALL 指令的目标函数匹配逻辑
- 增加简名匹配支持,适用于 IR 中生成的 CALL 指令
-保留原有的全名匹配逻辑
- 优化了 patchCallFixes 方法,提高了匹配效率
2025-08-31 17:02:21 +08:00
416f3fdeb1 refactor: 重构表达式构建逻辑
- 优化常量折叠逻辑,使用 switch-case 结构替代 if-else
- 增加对链式方法调用的支持
- 调整函数调用构建流程,按被调用对象类型分支处理
- 优化参数传递逻辑,区分隐式 this 参数和显式参数- 规范化方法和函数名处理,自动补充模块名前缀
2025-08-31 17:01:10 +08:00
419057c3c2 fix: 修正 getName 方法调用 2025-08-31 15:34:41 +08:00
b4a0bccb66 feat: 增强结构体解析器功能
- 优化结构体声明块的解析逻辑,支持更灵活的语法
- 改进构造函数块的解析,允许参数块和方法体块的自由顺序
- 扩展参数块解析,支持内置类型和自定义标识符作为参数类型
- 修复了一些解析过程中的小问题,提高了代码的健壮性
2025-08-30 17:06:42 +08:00
9ac8b6166a refactor: 重构函数解析器以提高可读性和可维护性
- 优化了函数解析器的结构,使其更加清晰和易于理解
- 改进了错误处理机制,使用更具体的异常类型
- 增加了对类型声明和参数列表的容错性
- 移除了冗余代码和不必要的注释,提高了代码的简洁性
2025-08-30 17:04:49 +08:00
f00d99d748 test: 更新以测试新功能 2025-08-30 17:04:00 +08:00
4b90f15371 test: 添加自定义类型字段嵌套示例
- 新增 Main.snow 文件,定义了 Address 和 Person 两个结构体- 在 Person 结构体中使用 Address 类型的字段,实现类型嵌套
- 添加 OS.snow 文件,提供基本的打印功能- 此示例展示了如何在 SNOBOL 中使用自定义类型进行字段嵌套
2025-08-30 14:25:11 +08:00
cbd8b24c4c chore: 添加 Demo29运行配置
- 新增 Demo29.run.xml 文件
2025-08-30 14:25:01 +08:00
1e832dc8bf test: 添加 Animal 类的 setAge 方法并优化 OS 模块
- 在 Animal 结构体中添加 setAge 方法,用于设置 age 字段
- 在 OS 模块中添加 println函数,实现换行打印功能- 更新 Main 函数,演示使用 setAge 方法和 println 函数
2025-08-30 11:28:56 +08:00
513aeba2bc feat: 支持结构体字段赋值
- 增加对 this.<field> 结构体字段赋值的支持
- 优化赋值语句处理逻辑,优先考虑局部/参数变量- 修复字段写入后的常量绑定问题
- 优化变量声明和初始化流程
2025-08-30 11:28:42 +08:00
cff45a9d17 refactor: 重构 FunctionBuilder
- 优化了 FunctionBuilder 类的文档注释,详细描述了其功能和处理流程
- 改进了 build 方法的内部逻辑,提高了代码可读性和可维护性
- 修复了返回类型为空时的处理逻辑,增加了鲁棒性
- 优化了默认字面量后缀的设置逻辑,提高了代码的灵活性
2025-08-30 11:27:25 +08:00
db720ea357 docs: 更新类文档并移除冗余信息 2025-08-29 18:25:17 +08:00
35fdb25d27 feat: 实现数组自动扩容功能
- 在 SyscallCommand 类中的列表操作中增加了自动扩容逻辑
- 当访问的索引超过当前列表大小时,自动将列表大小扩展到该索引
- 这种实现允许在 append操作时直接使用 set 方法,而不需要额外判断
2025-08-29 18:24:39 +08:00
0c2a888e86 feat: 新增关键字支持
- 在 TokenFactory 类中添加了关键字 "new" 的支持
- 此更新扩展了编译器的词汇分析能力,使其能够识别和处理新的关键字
2025-08-29 18:24:39 +08:00
584e226051 feat: 扩展签名注册器支持结构体类型
- 增加结构体类型签名的登记逻辑,包括构造函数和方法签名
- 优化模块级函数签名的注册流程,提高代码可读性
- 完善导入模块的合法性校验,确保模块存在性
2025-08-29 18:24:39 +08:00
586ede1cf0 refactor: 重构表达式解析器文档和代码
- 更新类文档,使其更清晰地描述 Pratt 表达式解析器的功能和结构
- 优化方法注释,增加对核心解析逻辑的解释
- 调整代码格式,提高可读性
- 补充注释说明前缀和中缀解析器的注册方式及使用场景
2025-08-29 18:24:39 +08:00
17b078b6f3 feat: 增加结构体定义解析并优化模块解析逻辑
- 添加 StructParser 解析器,支持结构体定义解析
- 重构 ModuleParser 解析逻辑,提高代码可读性和可维护性
- 优化模块解析流程,支持空行和灵活的语法结构
- 增加异常处理,提升错误提示的准确性和可读性
2025-08-29 18:24:39 +08:00
fea8e14245 refactor: 重构 ModuleNode 类并增强其文档注释
- 重新组织类的结构,使其更加清晰和易于理解- 增加了对模块节点包含内容的详细注释,包括全局变量、结构体和函数定义
- 优化了 toString 方法的实现,提高了代码可读性
- 补充了对结构体定义列表的处理
2025-08-29 18:24:39 +08:00
49cb89c9f2 feat: 添加用户自定义结构体类型支持
- 新增 StructType 类,用于描述结构体的静态类型信息
- 实现了结构体类型的唯一标识、字段定义、方法签名和构造函数等功能
- 支持跨模块同名结构体的类型检查和兼容性判断
2025-08-29 18:24:39 +08:00
3942a22e67 feat: 添加结构体解析功能
- 实现了结构体声明块的语法解析器 StructParser
- 支持解析结构体字段、构造函数和方法列表
- 添加了构造函数 init 的解析逻辑
- 实现了参数块和方法体块的解析
- 通过 AST 节点表示结构体及其成员
2025-08-29 18:24:39 +08:00
f03a44d2a5 feat: 添加结构体定义的 AST 节点
- 新增 StructNode 类,表示结构体定义
- 包含结构体名称、字段列表、构造函数和方法列表等信息
- 实现了 toString 方法,便于调试和日志查看
2025-08-29 18:24:39 +08:00
1835b85c5c feat: 新增对象创建表达式节点
- 添加 NewExpressionNode 类,表示对象创建表达式
- 该节点用于处理 "new" 关键字实例化类型的语法
- 包含目标类型名、构造函数参数列表和源码位置信息
- 实现了 ExpressionNode 接口,提供获取源码上下文的方法
2025-08-29 18:24:39 +08:00
1ab4fb2e87 feat: 新增对象节点的创建 2025-08-29 18:24:38 +08:00
2abe056056 feat: 新增对象创建表达式语义分析器
- 实现了 NewExpressionAnalyzer 类,负责分析和推断 "new T(args...)" 表达式的类型
- 校验目标类型是否为结构体,参数数量与类型是否匹配构造函数
- 支持数值类型的自动宽化
- 在类型解析失败时提供详细的错误信息
2025-08-29 17:56:09 +08:00
a34f51dee1 feat: 添加模块节点 ModuleNode 类
- 新增 ModuleNode 类作为源文件或逻辑模块的 AST 根节点
- 包含模块名、导入依赖、全局变量、结构体定义、函数定义等信息
- 实现了 toString 方法,便于调试和日志输出
2025-08-29 17:54:06 +08:00
8902748cde feat: 丰富 ModuleInfo 类以支持结构体和更广泛的语义分析
- 新增 structs 字段,用于存储模块中定义的结构体类型
- 扩展类注释,明确 ModuleInfo 的功能和用途
- 优化字段和方法注释,增强代码可读性和易维护性
- 调整部分方法实现,提高模块信息管理的灵活性和安全性
2025-08-29 17:52:42 +08:00
258d1909e6 feat: 语义分析支持结构体成员访问
- 新增对结构体实例成员和方法访问的支持
- 扩展跨模块成员访问,支持模块内的函数引用
- 优化了对成员访问表达式的处理逻辑,提高了类型推断的准确性和范围
- 修复了一些与成员访问相关的语义错误处理问题
2025-08-29 17:50:58 +08:00
1f7458be28 feat: 支持结构体并优化全局常量处理
- 新增结构体字段布局预扫描和注册功能
- 实现结构体方法和构造函数的降级处理
- 优化全局常量收集逻辑,支持跨模块常量折叠
- 重构代码,明确方法职责,提高可读性和可维护性
2025-08-29 17:49:12 +08:00
093e5a26b9 refactor: 优化 IRContext 类文档及代码结构
- 更新类文档,明确核心功能和使用场景
- 优化方法文档,提高代码可读性和易维护性
- 调整部分方法实现,如 newTempRegister,以简化用法
- 重新组织代码结构,提高逻辑清晰度
2025-08-29 17:46:33 +08:00
4b633bae70 feat: 丰富 IRConstant 类功能
- 添加通用工厂方法 fromObject
- 实现数字字面量解析方法 fromNumber
- 增加字符串和布尔字面量工厂方法
- 改进 toString 方法,提供调试友好的输出
2025-08-29 17:45:17 +08:00
8f59f91766 feat: 维护结构体字段布局的全局静态表
- 新增 STRUCT_LAYOUTS静态字段,用于存储结构体字段布局
- 添加 registerStructLayout 方法,注册结构体字段布局
- 实现 lookupFieldIndex 和 getStructLayout 方法,用于查询字段布局
- 优化跨模块常量导入和查询逻辑
- 重构部分代码,提高可读性和维护性
2025-08-29 17:43:29 +08:00
37c03cf248 test: 修改 Demo28 2025-08-29 17:41:52 +08:00
a8f1789fe0 chore: 修改测试配置 2025-08-29 17:41:23 +08:00
cdfcbf0d6f refactor: 重构函数语义检查器并增强错误提示
- 重构 FunctionChecker 类,优化函数体语义检查流程- 增加全局符号表构建和局部变量声明的详细注释
- 改进错误提示信息,提高代码可读性和可维护性
2025-08-29 17:40:45 +08:00
b56824d935 feat: 支持以 'this' 开头的表达式并优化赋值语句解析
- 允许 'this'作为表达式起始,支持 'this.xxx' 形式的赋值
- 优化赋值语句解析逻辑,支持更复杂的左值表达式
- 新增对 'this' 成员赋值的特殊处理,降级为普通变量赋值
- 改进错误处理,对不支持的赋值左值类型抛出异常
2025-08-29 17:38:55 +08:00