|
|
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 |
|
|
|
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 |
|
|
|
2dd5e64c3a
|
feat: 支持以 'this' 开头的表达式并优化赋值语句解析
- 允许 'this'作为表达式起始,支持 'this.xxx' 形式的赋值
- 优化赋值语句解析逻辑,支持更复杂的左值表达式
- 新增对 'this' 成员赋值的特殊处理,降级为普通变量赋值
- 改进错误处理,对不支持的赋值左值类型抛出异常
|
2025-08-29 17:35:04 +08:00 |
|
|
|
5b259a01d8
|
feat: 支持 new 表达式并优化成员访问
- 新增对 new 表达式(如 new Array())的支持,实现数组/对象的动态创建
- 优化成员访问表达式处理,支持字段回退机制
- 重构标识符解析逻辑,提高变量查找效率
-改进函数调用表达式处理,支持更多调用场景
|
2025-08-29 17:30:39 +08:00 |
|
|
|
fb441c01af
|
feat: 增强变量声明语句解析功能
- 支持类型标识符与自定义结构体名
- 支持带初始值的声明
- 增加对常量声明的支持(使用 const 关键字)
- 优化错误处理,提高语法错误提示的准确性
|
2025-08-29 17:16:14 +08:00 |
|
|
|
1a34e3e436
|
refactor: 重构语义分析上下文类
- 优化 Context 类的结构和功能,提高可读性和可维护性- 添加当前模块名管理方法,增强模块作用域支持
- 改进类型解析方法,支持更复杂的类型查找逻辑
- 统一错误收集和日志输出接口
|
2025-08-29 17:02:14 +08:00 |
|
|
|
4a64659856
|
refactor: 重构编译任务代码
- 将类 CompileTask 改为记录类型,简化构造方法和成员变量定义
- 优化代码结构,按功能分块组织代码
- 改进注释,增加代码可读性
- 简化部分变量和方法名,提高代码清晰度
|
2025-08-29 16:56:29 +08:00 |
|
|
|
325ca67872
|
refactor: 重构代码以提高可读性和可维护性
- 优化了方法结构,减少了冗余代码
- 提高了错误提示的详细程度
- 增加了类型前缀处理方法,简化了类型判断逻辑
- 调整了参数加载逻辑,提高了代码复用性
|
2025-08-29 15:46:57 +08:00 |
|
|
|
86a78bd1c6
|
feat: 增强函数调用表达式的语义分析
- 支持三种函数调用形式:模块函数调用、结构体实例方法调用、普通函数调用
- 增加对结构体方法调用的支持
- 优化模块和函数解析逻辑
- 增强错误处理,包括对私有函数访问控制的检查
- 代码注释和文档进行了详细补充,以提高可读性和可维护性
|
2025-08-29 15:26:39 +08:00 |
|
|
|
50f4fbb82d
|
feat: 添加对结构体节点的打印支持
- 增加了对 StructNode 类型的处理逻辑
- 打印结构体名称、字段、初始化函数和方法
- 优化了打印结构体信息的输出格式
|
2025-08-29 15:23:21 +08:00 |
|
|
|
3dd71ff742
|
feat: 添加 Struct 节点的序列化支持
- 在 ModuleNode 中添加 structs 字段,支持结构体定义的序列化
- 新增 StructNode 处理逻辑,实现结构体节点的序列化
- 为结构体添加字段、初始化方法和成员方法的序列化支持
|
2025-08-29 15:22:42 +08:00 |
|
|
|
8fce695e8f
|
feat: 添加了 NewExpressionNode 的分析器注册
|
2025-08-29 15:10:54 +08:00 |
|
|
|
45a13fd15e
|
refactor: 去掉token打印
|
2025-08-29 09:40:42 +08:00 |
|
|
|
4181ff8ae2
|
refactor: 移除 StringEscape 类中未使用的 escape 方法
- 删除了 StringEscape 类中的 escape 方法,该方法用于将普通字符串编码为可安全存储的转义字符串
- 保留了unescape方法,并简化了其文档注释
|
2025-08-27 10:44:44 +08:00 |
|
|
|
49b5e61e8e
|
feat: 增加字符串字面量的转义符和 Unicode 转义解析
- 引入 StringEscape 工具类用于字符串转义
- 在解析字符串字面量时,去除首尾引号
- 对字符串内部内容进行转义符和 Unicode 转义解析
|
2025-08-27 10:43:34 +08:00 |
|
|
|
bc512fd02d
|
feat: 添加字符串转义/反转义工具类
- 新增 StringEscape 类,提供编译期和运行期的字符串转义/反转义功能
- 支持常见控制字符、特殊字符和 Unicode 字符的转义/反转义
- 适用于 .water指令文件的保存和虚拟机执行时的字符串还原
|
2025-08-27 10:41:19 +08:00 |
|
|
|
2fc2a93414
|
feat: 增强引用推送指令功能
- 支持字符串字面量和数组字面量的解析
- 添加对不同数据类型(如浮点数、长整型等)的解析支持
- 优化了代码结构,提高了可读性和可维护性
- 增加了对 Unicode 逃逸序列的支持
- 添加了详细的类和方法注释,提高了文档质量
|
2025-08-27 10:39:21 +08:00 |
|
|
|
9bdc6245bf
|
fix: 修复字符串常量在 VM 代码中的表示问题
- 在 LoadConstGenerator 中添加字符串转义功能,确保字符串常量在 VM 代码中正确表示
- 优化 formatConst 方法,对字符串常量进行转义处理
- 新增 escape 方法,用于字符串转义,包括控制字符和非 ASCII 字符的处理
|
2025-08-27 10:35:23 +08:00 |
|
|
|
caa62b0bfb
|
feat: 增加模块私有函数访问控制
- 新增规则:以"_"开头的函数名只允许在本模块访问,禁止跨模块访问
- 在 CallExpressionAnalyzer 中实现该规则的检查逻辑
|
2025-08-26 18:08:46 +08:00 |
|
|
|
b058ee4526
|
refactor: 优化全局变量处理和常量折叠逻辑
- 过滤与函数参数重名的全局声明,避免命名冲突
- 优化常量折叠逻辑,支持跨模块常量优化- 修复字符串字面量和布尔字面量的处理
- 优化代码结构,提高可读性和可维护性
|
2025-08-26 16:29:29 +08:00 |
|
|
|
c412d1194b
|
feat: 增加全局符号表支持
- 在 ModuleInfo 类中添加 SymbolTable 类型的 globals 字段
- 实现 getGlobals 和 setGlobals 方法,用于获取和设置全局符号表
|
2025-08-26 14:33:45 +08:00 |
|
|
|
f39aece9cf
|
feat: 支持模块成员访问的语义分析
- 实现了跨模块常量和全局变量访问的语义分析- 能根据目标模块的全局符号表返回准确的类型信息- 完全支持跨模块类型推断
- 对非模块成员访问的情况增加了错误处理
|
2025-08-26 14:32:58 +08:00 |
|
|
|
439304c86a
|
feat: 增强全局常量处理与字面量解析
- 支持整数、浮点数、字符串和布尔字面量的解析
- 添加类型后缀支持(b/s/l/f/d),并进行相应的类型转换
- 优化数字字面量的解析逻辑,支持科学计数法和下划线分隔符
- 改进字面量提取工具的文档注释,明确支持的类型和转换规则
|
2025-08-26 14:32:13 +08:00 |
|
|
|
6e31185519
|
feat: 重构 FunctionChecker 采用两遍扫描策略
- 设计核心:采用“两遍扫描”方案,彻底解决跨模块全局变量/常量类型推断和引用依赖问题
- 第一遍:为所有模块预先构建并注册全局符号表(globals)
- 第二遍:在全局符号表全部就绪后,依次分析所有模块的函数体
-功能职责:
- 遍历所有模块,先建立 globals,再遍历并检查所有函数体语句
- 为每个函数体构建完整符号表,并注册参数变量
- 分发每条语句到对应 StatementAnalyzer进行类型检查和错误校验
- 自动检查非 void 函数 return 完备性
- 记录所有语义错误,便于前端高亮和诊断
|
2025-08-26 14:29:37 +08:00 |
|
|
|
1c86c1dce7
|
feat: 改进 IR 指令生成逻辑并支持浮点数
- 新增对 long、float 和 double 类型常量加载的支持
- 优化二元运算指令生成,支持不同类型的操作数
- 实现基于变量类型的 move 指令,提高类型兼容性
- 简化控制流指令的生成逻辑
- 优化代码结构,提高可读性和可维护性
|
2025-08-26 14:01:19 +08:00 |
|
|
|
0d6c6cef5a
|
feat: 添加成员表达式语义分析器
- 实现了 MemberExpressionAnalyzer 类,用于分析成员访问表达式
- 目前仅支持 ModuleName.constOrVar 形式的跨模块常量/全局变量访问
- 不支持对象成员访问,如 a.b.c- 类型降级为 int,后续由 IR 阶段进行常量折叠
|
2025-08-26 11:52:47 +08:00 |
|
|
|
06bb647c83
|
feat: 实现全局常量预加载及跨模块常量折叠
- 新增 preloadGlobals 方法,扫描所有模块节点,将常量注册到全局常量表- 支持整数、浮点数、字符串和布尔字面量的直接评估
- 优化了 IRProgram 的构建过程,增加了对全局常量的处理
|
2025-08-26 11:44:04 +08:00 |
|
|
|
cc66eee75f
|
feat: 支持跨模块全局常量查找
- 新增 externalConsts 字典用于存放跨模块导入的全局常量
- 修改 getConstValue 方法以支持查找外部常量
- 添加 importExternalConst 方法用于导入外部常量
|
2025-08-26 11:37:05 +08:00 |
|
|
|
1e2b0e4e0d
|
feat: 新增全局常量表支持跨模块常量管理
- 添加 GlobalConstTable 类,用于编译期间跨模块常量查询和折叠
- 提供注册常量、查询常量和获取所有常量的功能
- 保证线程安全,支持并发操作- 常量的 key采用“模块名.常量名”的格式,确保唯一性
|
2025-08-26 11:35:08 +08:00 |
|
|
|
1a0c3a38cb
|
feat: 更新 FunctionBuilder构建流程与文档
- 在全局函数表中注册函数名与返回类型
- 初始化 IRFunction 实例与 IRContext 上下文对象
- 自动导入全局常量(包括跨模块 const 变量)到当前作用域
- 根据函数返回类型设置表达式推断的默认字面量类型后缀
- 遍历声明形参,每个参数分配虚拟寄存器,并注册到作用域
- 依次转换函数体中的每条语句为 IR指令
- 函数体转换完成后,清理默认类型后缀
|
2025-08-26 11:32:48 +08:00 |
|
|
|
fcdc3a49f8
|
feat: 支持成员访问表达式
- 添加对成员访问表达式(如 ModuleA.a)的支持
- 实现 buildMember 方法来处理成员表达式节点
- 增加对全局常量和作用域内常量的处理逻辑
|
2025-08-26 11:30:20 +08:00 |
|
|
|
139c42a90e
|
feat: 实现成员访问表达式分析器
- 替换 UnsupportedExpressionAnalyzer 为 MemberExpressionAnalyzer
|
2025-08-26 11:29:03 +08:00 |
|
|
|
91aef32a42
|
feat: 添加常量符号类型并完善文档注释
- 在 SymbolKind 枚举中添加 CONSTANT 类型,用于表示只读、不可变的公开常量- 完善了各符号类型的文档注释,明确其用途和特点
- 优化了代码格式和段落结构,提高了代码可读性
|
2025-08-26 01:45:00 +08:00 |
|
|
|
18c9cbad7b
|
feat: 增加常量声明支持并优化变量声明节点
- 在 DeclarationNode 类中添加 isConst 字段,用于表示是否为常量声明
-增加 isConst() 方法以判断声明是否为常量
- 优化类注释,明确变量和方法的作用
- 更新构造函数以支持常量声明
|
2025-08-26 01:44:16 +08:00 |
|
|
|
3b39e9059b
|
feat: 添加 const 关键字支持
- 在 TokenFactory 类中的 KEYWORDS 集合中添加了 "const" 关键字
- 此修改为编译器增加了对常量声明的支持,扩展了语言的功能
|
2025-08-26 01:18:24 +08:00 |
|
|
|
c44f8a4630
|
refactor: 优化 declare 语句的标识符处理逻辑
- 允许 declare 后跟随 const 关键字
-调整错误提示信息,使其更加清晰
- 优化代码结构,提高可读性
|
2025-08-26 01:18:07 +08:00 |
|
|
|
c4e9e541fb
|
refactor: 优化全局变量声明的错误信息
-根据变量是否为常量,动态设置符号种类
-针对常量和变量分别定制重复声明的错误信息
|
2025-08-26 01:17:47 +08:00 |
|
|
|
da7d7bbcaa
|
feat: 增加常量声明支持并优化声明语句解析
- 增加对常量声明的支持,通过匹配 "const" 关键字
-优化代码结构,使用 var tokens变量引用词法 token 流
- 简化代码逻辑,提高可读性和可维护性
|
2025-08-26 01:17:13 +08:00 |
|
|
|
d0c34ce1c2
|
feat: 优化声明语句语义分析
- 重构代码,优化分析流程,增加对常量声明的处理
-改进错误处理和日志输出,提高可读性和调试友好性
- 修复了一些潜在的语义分析问题,如常量未初始化的检查
|
2025-08-26 01:16:40 +08:00 |
|