|
|
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 |
|
|
|
1872221666
|
refactor: 优化赋值语句语义分析逻辑
|
2025-08-26 01:16:26 +08:00 |
|
|
|
80efd7c357
|
feat: 添加 os.snow系统库模块
|
2025-08-24 12:13:23 +08:00 |
|
|
|
3406e1a2dd
|
refactor: 移除词法分析器中的调试代码
|
2025-08-22 17:34:53 +08:00 |
|
|
|
00f73ecb47
|
!56 refactor: 重构关键字
Merge pull request !56 from zhangxun/feature/refactor-keyword
|
2025-08-04 09:23:38 +00:00 |
|
zhangxun
|
a9b4a6682a
|
fix: 省略模块函数调用前缀,语义分析依然判定函数存在
|
2025-08-04 16:37:04 +08:00 |
|
zhangxun
|
3e7e5f2dad
|
feat: 支持标准 URL 格式
|
2025-08-04 15:01:11 +08:00 |
|
zhangxun
|
d11822f4ba
|
refactor: 重构模板代码
|
2025-08-04 14:50:10 +08:00 |
|
zhangxun
|
87560db20d
|
refactor: 重构关键字
|
2025-08-04 14:49:39 +08:00 |
|
zhangxun
|
3a2a1363e6
|
feat: 增强错误定位
|
2025-08-04 13:45:23 +08:00 |
|
|
|
4eb1aff553
|
Merge branch 'dev' into bugfix/fix-global-redeclare-error
|
2025-08-03 00:49:18 +08:00 |
|
|
|
7fab3cc662
|
feat: 检查全局变量重复声明
- 在 FunctionChecker 类中增加了对全局变量重复声明的检查
- 如果全局变量已经存在,则添加语义错误信息
|
2025-08-03 00:36:34 +08:00 |
|
|
|
d3a85a24bf
|
feat: 支持数组元素赋值操作
- 新增 __setindex_x 系列内置函数,用于数组元素赋值
- 实现了对 byte、short、int、long、float、double、boolean 和引用类型数组的支持
- 修改了 ExpressionBuilder 和 StatementBuilder以支持数组赋值语法
- 更新了 VirtualMachineEngine 和 SyscallCommand 以支持新的 ARR_SET系统调用
|
2025-08-03 00:08:28 +08:00 |
|
|
|
f61cfa5638
|
fix: 修复常量类型在 VM 中的表示问题
- 为浮点数添加 f 后缀,避免在 VM 中被错误解释为双精度浮点数
- 为长整数添加 L 后缀,保留类型信息
- 双精度浮点数和整数使用默认格式输出
- 支持数组常量的递归序列化,保留类型信息
- 优化了常量生成逻辑,提高了代码可读性和维护性
|
2025-08-02 12:32:28 +08:00 |
|
|
|
f6c877a7a1
|
refactor: 调整代码格式和注释
|
2025-08-02 10:51:14 +08:00 |
|
|
|
b093f8db72
|
feat: 支持数组下标访问类型分派
- 扩展 __index_i 函数支持 byte、short、int、long、float、double、boolean等类型
- 新增 __index_b、__index_s、__index_l、__index_f、__index_d、__index_r 函数- 优化数组元素访问的 IR 生成逻辑,根据类型选择合适的函数
- 更新 VM 层的 ARR_GET 子命令处理逻辑,支持多种数据类型
|
2025-08-02 10:49:54 +08:00 |
|
|
|
102e84bc01
|
feat: 重构并扩展调用指令生成逻辑
- 优化了 syscall、数组下标访问和普通函数调用的处理逻辑
- 新增对多维数组下标访问的支持
- 改进了字符串常量和寄存器的绑定机制
- 统一了参数加载和错误处理的代码
|
2025-08-01 23:33:31 +08:00 |
|
|
|
82f4ba1a6e
|
feat: 支持数组类型及数组字面量
- 新增 ArrayLiteralNode 表示数组字面量表达式节点
- 实现 ArrayLiteralAnalyzer 进行数组字面量的语义分析
- 添加 ArrayType 表示数组类型,并支持多维数组
- 修改 Context 类,增加对数组类型的支持
- 更新 DeclarationStatementParser,支持多维数组类型的声明
- 在 CallGenerator 中添加对特殊函数 __index_i 的处理,用于数组索引操作
|
2025-08-01 18:34:03 +08:00 |
|
|
|
b7e9c8121e
|
refactor: 重构 RetCommand 并添加日志记录
- 更新导入语句,明确导入模块
- 使用 LoggingUtils 替代 System.out.println 输出日志
- 添加换行符改善日志可读性
|
2025-07-31 14:11:09 +08:00 |
|
|
|
466b6ca2be
|
refactor: 移除 VMCodeGenerator 中的冗余字段
- 删除了 VMCodeGenerator 类中不再使用的 currentFn 字段- 将 currentFn 作为局部变量在 generate 方法中使用
- 这个改动简化了类的结构,减少了冗余代码
|
2025-07-31 12:48:10 +08:00 |
|
|
|
cadace165a
|
feat: 改进函数调用和模块处理机制
- 补充模块名以生成全限定函数名,增强模块间调用的准确性
- 重构 IRProgramBuilder 以更清晰地处理模块和函数
- 优化 VMCodeGenerator 和 VMProgramBuilder 以支持新的全限定名机制
|
2025-07-31 12:43:17 +08:00 |
|
|
|
1293ac1f83
|
refactor: 优化数字字面量的语义分析与错误提示
- 重构了类型推断逻辑,支持更精确的类型判断
- 实现了智能的错误提示策略,根据不同情况给出具体建议
- 优化了范围校验逻辑,提高了代码的健壮性
- 改进了代码结构和注释,提高了可读性和可维护性
|
2025-07-31 00:26:44 +08:00 |
|
|
|
fdeaa36366
|
feat: 增强数字字面量的语义分析和错误提示
- 添加类型推断和范围校验逻辑,支持 byte、short、int、long、float 和 double 类型
- 实现溢出和格式错误的统一处理,提供详细的错误提示
- 优化代码结构,增加私有方法以提高可读性和可维护性
|
2025-07-30 12:03:41 +08:00 |
|
|
|
63835a1cce
|
refactor: 优化变量声明语句的处理逻辑
- 澄清变量声明语句的处理流程,特别是带有初始值的情况
- 引入新分配的虚拟寄存器,确保变量和初始值表达式中的变量物理上独立
- 优化类型设置和作用域声明的顺序,提高代码的可读性和维护性
|
2025-07-29 11:50:06 +08:00 |
|
|
|
7c0a5e2524
|
docs: 优化 BreakStatementParser 类的文档注释
|
2025-07-29 11:23:01 +08:00 |
|
|
|
7395256b5a
|
feat: 添加 continue 语句支持
- 新增 ContinueNode、ContinueAnalyzer 和 ContinueStatementParser 类
- 在 AnalyzerRegistrar 中注册 continue 语句分析器
- 在 StatementBuilder 中添加 continue 语句的处理逻辑
- 更新 StatementParserFactory 和 TokenFactory 以支持 continue 关键字
|
2025-07-29 11:20:46 +08:00 |
|
|
|
187ec7e0e9
|
Merge branch 'main' into dev
# Conflicts:
# .run/Demo1.run.xml
# .run/Demo10.run.xml
# .run/Demo11.run.xml
# .run/Demo12.run.xml
# .run/Demo13.run.xml
# .run/Demo14.run.xml
# .run/Demo2.run.xml
# .run/Demo3.run.xml
# .run/Demo4.run.xml
# .run/Demo5.run.xml
# .run/Demo6.run.xml
# .run/Demo7.run.xml
# .run/Demo8.run.xml
# .run/Demo9.run.xml
# src/main/java/org/jcnc/snow/pkg/tasks/CompileTask.java
|
2025-07-29 09:21:03 +08:00 |
|
|
|
856d113b53
|
feat: 添加 break 语句支持
- 新增 BreakNode、BreakAnalyzer 和 BreakStatementParser 类
- 在 AnalyzerRegistrar 中注册 break 语句分析器
- 在 ASTPrinter 中添加 break 语句的打印处理
- 在 StatementBuilder 中实现 break 语句的 IR 构建逻辑
- 更新 StatementParserFactory 和 TokenFactory,支持 break 关键字
|
2025-07-28 18:00:41 +08:00 |
|
|
|
9132c79c54
|
feat: 添加整数和浮点数的取余运算指令
- 在 IROpCode枚举中添加了 MOD_B8、MOD_S16、MOD_I32、MOD_L64、MOD_F32 和 MOD_D64 指令
- 更新了 IROpCodeMapper 映射,增加了取余运算的后端指令
- 修改了 IROpCodeMappings 类,添加了取余运算符与 IR 操作码的映射
|
2025-07-28 17:11:25 +08:00 |
|
|
|
21ca6e6cab
|
feat: 支持模块全局变量声明
- 在 ModuleNode 中添加 globals 字段,用于存储全局变量声明
- 实现 globals 区块的解析逻辑,支持全局变量的声明
- 更新 ASTJsonSerializer 以支持全局变量的序列化
- 修改 FunctionChecker 和 IRProgramBuilder 以支持全局变量
|
2025-07-28 13:39:33 +08:00 |
|
|
|
f5a6443c8a
|
refactor: 将调试标志从 -debug 改为 --debug
|
2025-07-28 10:25:13 +08:00 |
|
|
|
210fdb62f0
|
feat: 添加全局调试选项并更新相关功能
- 在 CLIUtils 中添加了全局调试标志集合,支持 "-debug" 和 "--debug" 选项
- 在 CompileTask 中更新了调试选项的处理逻辑,支持新的 "--debug" 标志
- 在 SnowCLI 中引入了 Mode 和 SnowConfig 类,以支持调试模式的配置
|
2025-07-24 12:36:56 +08:00 |
|
|
|
b826fc43aa
|
chore:优化 Native Image 相关代码
- 移除 module-info.java 中对 org.graalvm.nativeimage 的直接引用
- 修改 VMUtils 中的 isNativeImage 方法,使用反射调用 ImageInfo
|
2025-07-24 11:23:55 +08:00 |
|
|
|
1486a1e3a5
|
docs: 更新 LocalVariableStore 类的注释
|
2025-07-23 10:49:34 +08:00 |
|
|
|
80deaa9c4f
|
feat: 添加对 GraalVM native-image 的支持
- 在 LocalVariableStore 中添加对 native-image环境的检测
- 在 VMUtils 中实现 isNativeImage 方法
- 更新 module-info.java,添加对 org.graalvm.nativeimage 的依赖
- 优化调试模式下的 UI 显示逻辑,避免在 native-image 环境中显示 Swing 窗口
|
2025-07-23 10:42:38 +08:00 |
|
|
|
ebb9524db0
|
refactor: 保留 cloud模式下的 "run" 和 "-debug" 标志
|
2025-07-23 10:24:49 +08:00 |
|
|
|
6f81feab3f
|
refactor: 重构虚拟机和编译器的调试输出逻辑
|
2025-07-22 22:34:15 +08:00 |
|