登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
程序开发
>
编程语言/脚本语言
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
11
Star
114
Fork
15
JCNC
/
Snow
代码
Issues
7
Pull Requests
0
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
68
feature: 新增结构体以及相关语法
已合并
JCNC:feature/add-struct
JCNC:dev
Luke
创建于 2025-08-30 09:15
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
## 描述 (Description) 本次 PR 主要围绕 **Snow 虚拟机和编译器的结构体继承、虚拟调用、函数调用规则**等方面进行了扩展与优化,增强了面向对象特性支持。同时对 IR 构建、VM 执行、代码组织、测试和 Demo 配置进行了全面完善,提升了 Snow 的可读性、可维护性和扩展性。 ## 主要改动 (Changes) * **虚拟调用与 vtable** * 添加虚拟函数表 (VirtualTable) 实现,支持方法注册、查找和快照 * 添加 `Instance` 类,支持运行时对象实例和虚拟表管理 * 增加对 `@Class::method` 虚拟调用语法的支持,完善 CALL 指令逻辑 * 支持基于继承链的虚方法绑定与多态 * **结构体继承与构造函数** * 为结构体类型添加继承支持(父类字段与方法复用) * 支持 `super.method(...)` 调用父类方法和 `super(...)` 调用父类构造函数 * 增强结构体签名登记、继承关系注册与维护 * 支持结构体多构造函数、重载与降级生成 * 新增构造函数选择逻辑与兼容性判断 * 完善结构体的序列化、打印和调试功能 * **编译与 IR 层优化** * 优化 `emitCall`、CALL 修复、super 调用匹配等逻辑 * 重构 IRBuilderScope、VMProgramBuilder、IRProgram、IRContext 等核心类 * 优化函数解析器、语义分析器和表达式构建逻辑 * 丰富错误提示与文档注释,统一风格,提高可维护性 * **功能扩展** * 新增对象创建表达式节点和语义分析器 (`new` 表达式支持) * 添加模块节点 (ModuleNode)、结构体节点 (StructNode) 及其序列化逻辑 * 扩展签名注册器,支持结构体类型签名与跨模块校验 * 支持 this.xxx 赋值和更复杂的表达式解析 * **测试与 Demo** * 添加多态、继承、构造函数等功能的 Demo (Demo26–Demo33) * 丰富单元测试与示例代码(如类继承、对象实例化、自定义类型等) * 调整运行配置,增加/移除调试参数 * **其他改进** * 重构函数语义检查器、FunctionBuilder 等 * 优化 AST、注释、文档与日志输出 * 移除不必要的调试代码和兜底逻辑 ## 检查清单 (Checklist) - [x] 已阅读并遵守项目规范 - [x] 本地通过所有测试 - [x] 文档已更新(如有必要)
此 Pull Request 需要贡献者签署贡献者协议后方可合并。
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
zhangxun
Luke
已审查通过
壹米佰叁
已完成
(1/1人)
测试
zhangxun
Luke
已测试通过
壹米佰叁
已完成
(1/1人)
怎样手动合并此 Pull Request
git checkout dev
git pull https://gitee.com/jcnc-org/snow.git feature/add-struct
git push origin dev
评论
0
提交
118
文件
128
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
Sky
SFENGY
zhangxun
zhangxun233
壹米佰叁
zhe116
杨海天
yanghaitian
Luke
Luke-Skywalker-Xu
未设置
最少人数
1
测试
Sky
SFENGY
zhangxun
zhangxun233
壹米佰叁
zhe116
杨海天
yanghaitian
Luke
Luke-Skywalker-Xu
未设置
最少人数
1
优先级
不指定
严重
主要
次要
不重要
标签
标签管理
feature
关联 Issue
ICQ1K1
[Feature] 支持函数重载
ICQ1KV
[Feature] 增加对结构体语法的支持
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
v0.10.0
参与者
(1)
Cherry-pick 提交
Cherry-pick 可以将
特定提交(Commit)
从某个分支挑选并应用到另一个分支,实现快速集成特定更改,而无需合并整个分支。
请选择应用 Cherry-pick 提交 (Commit) 的目标分支
新建分支
当前账号不存在 Fork 仓库,建议 cherry-pick 到 Fork 仓库。
Fork 仓库
提交列表
Commit SHA
Commit Message
基于 Cherry-pick 后的分支发起 Pull Request
取消
Cherry-pick
Java
1
https://gitee.com/jcnc-org/snow.git
[email protected]
:jcnc-org/snow.git
jcnc-org
snow
Snow
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册