|
|
b058ee4526
|
refactor: 优化全局变量处理和常量折叠逻辑
- 过滤与函数参数重名的全局声明,避免命名冲突
- 优化常量折叠逻辑,支持跨模块常量优化- 修复字符串字面量和布尔字面量的处理
- 优化代码结构,提高可读性和可维护性
|
2025-08-26 16:29:29 +08:00 |
|
|
|
71cbb3a737
|
test: 增加 Demo 24
|
2025-08-26 16:22:53 +08:00 |
|
|
|
ac0d3b9785
|
chore: 添加 Demo23 和 Demo24 的运行配置文件
|
2025-08-26 16:22:28 +08:00 |
|
|
|
f69dd85365
|
test: 增加 Demo23
|
2025-08-26 14:40:45 +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 |
|
|
|
1f8176d15e
|
test: 修改 Demo22
|
2025-08-26 11:55:25 +08:00 |
|
|
|
f8a331809f
|
chore: 移除 Demo22.run.xml 中的调试参数
|
2025-08-26 11:55:10 +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 |
|
|
|
2dfcc4c95e
|
chore: 更新项目构建配置
|
2025-08-26 09:52:14 +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 |
|
|
|
310e909359
|
test: 重构 Demo22 模块导入和文件布局
- 修改 Main.snow,移除未使用的 ModuleA 导入
- 将 ModuleA.snow 文件内容合并到 Main.snow 中
|
2025-08-26 01:43:27 +08:00 |
|
|
|
d10b7336c1
|
test: 重构示例代码 Demo22
|
2025-08-26 01:19:05 +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 |
|
|
|
1872221666
|
refactor: 优化赋值语句语义分析逻辑
|
2025-08-26 01:16:26 +08:00 |
|
|
|
0a35289ad0
|
chore: 添加 Demo22运行配置
|
2025-08-25 18:01:02 +08:00 |
|
|
|
5f42beaf2a
|
test: 添加 Demo22 演示项目
|
2025-08-25 18:00:54 +08:00 |
|
|
|
b454d65962
|
chore: 新增 Demo14 的运行配置
|
2025-08-25 18:00:40 +08:00 |
|
|
|
d536bd17ce
|
!62 feat: 构建与发布脚本优化
Merge pull request !62 from Luke/feature/add-build-docker
|
2025-08-25 07:33:23 +00:00 |
|
|
|
3b3478ee30
|
style: 删除无用注释
|
2025-08-25 15:21:18 +08:00 |
|
|
|
926e87888c
|
build: 优化打包脚本并移除并行构建总结
|
2025-08-25 15:20:36 +08:00 |
|
|
|
f7db4fcce8
|
chore: 添加 build-release-all.ps1 运行配置
|
2025-08-25 13:47:20 +08:00 |
|
|
|
9afc1caac7
|
build: 移除构建失败时的冗余错误提示
|
2025-08-25 13:47:08 +08:00 |
|
|
|
2a9d2b7f5f
|
chore: 修改脚本名词
|
2025-08-25 13:43:38 +08:00 |
|
|
|
f11303f0e8
|
build: 添加 Linux 和 Windows 平台的发布脚本配置
|
2025-08-25 13:41:40 +08:00 |
|
|
|
7dd273759a
|
build: 实现 Windows 和 Linux并行构建脚本
- 新增 build-parallel.ps1脚本,用于同时执行 Windows 和 Linux 构建任务
- 实现了日志实时输出和错误处理功能
- 添加了构建结果摘要和错误代码处理
|
2025-08-25 13:41:26 +08:00 |
|
|
|
e626553a9c
|
build: 降级 SNOW_VERSION 至 0.7.0
|
2025-08-25 13:18:01 +08:00 |
|
|
|
b2c0b986c4
|
build: 更新版本号并重构发布脚本
-重构 release-linux.ps1 脚本,添加版本号读取和输出路径定义
- 新增 release-windows.ps1 脚本,实现 Windows 版本的构建和打包
- 添加 dotenv.ps1工具脚本,用于统一解析 .env 文件
|
2025-08-25 13:17:51 +08:00 |
|
|
|
a16f0ac059
|
chore: 添加 Linux 版本导出脚本和相关配置
- 新增 .env 文件和生成脚本
- 更新 docker-compose.yml 和 Dockerfile 以支持 Linux 版本导出
- 添加 PowerShell 脚本生成 .env 文件
- 实现 Linux 版本导出的完整流程
|
2025-08-25 12:32:10 +08:00 |
|
|
|
d3646c86ec
|
chore: 增加docker自动构建
|
2025-08-24 22:02:54 +08:00 |
|
|
|
39dff9efc5
|
!61 release: 合并 v0.7.0 版本至 main 分支
Merge pull request !61 from Luke/release/v0.7.0
v0.7.0
|
2025-08-24 04:15:25 +00:00 |
|
|
|
80efd7c357
|
feat: 添加 os.snow系统库模块
|
2025-08-24 12:13:23 +08:00 |
|
|
|
99345ddd19
|
chore: 更新项目版本至0.7.0
|
2025-08-24 12:05:30 +08:00 |
|
|
|
df07531edc
|
chore: 更新 bug issue 模板中的软件版本选项
将 v0.6.0 版本替换为 v0.7.0版本,以反映软件的最新版本。
|
2025-08-24 12:05:15 +08:00 |
|
|
|
5511978ed8
|
!60 refactor: 移除词法分析器中的调试代码
Merge pull request !60 from Luke/feature/del-tokens
|
2025-08-22 09:37:19 +00:00 |
|
|
|
3406e1a2dd
|
refactor: 移除词法分析器中的调试代码
|
2025-08-22 17:34:53 +08:00 |
|