snow/doc/Snow-Lang-Roadmap/Snow-Lang-Roadmap.md
2025-06-20 10:31:35 +08:00

5.5 KiB
Raw Blame History

Snow 语言现状和下一阶段开发路线图

日期2025-06-11

1. 代码结构与职责

层次 主要包/目录 说明
词法分析 snow/compiler/lexer 扫描器Scanner+ TokenFactory,可识别关键字、运算符、数字/字符串字面量等
语法分析 snow/compiler/parser Pratt 表达式解析器 + 各类语句解析器(声明、ifloopreturn…)生成 AST
语义分析 snow/compiler/semantic 符号表、类型系统(BuiltinType/FunctionType)与各节点分析器
IR 构建 snow/compiler/ir SSA-风格中间表示、指令集、构建器
后端生成 snow/compiler/backend IR ➜ VM 指令的 *Generator 体系、寄存器分配
运行时 VM snow/vm 指令集实现(栈/寄存器/内存/控制流/函数)+ 启动器

2 编译流程

  1. Lexer 将源码映射为 TokenStream

  2. Parser 生成 AST19 种节点)

  3. Semantic

    • 类型推断 / 兼容性校验
    • 符号绑定与引用解析
  4. IR

    • 虚拟寄存器 + 基本块 + 统一指令(算术、比较、跳转、调用、返回…)
  5. Backend

    • 线性扫描寄存器分配
    • 指令生成器把 IR 转为 VM 指令
  6. VM

    • 栈-基 / 寄存器混合架构
    • 96 条已实现指令按数据宽度泛化B/S/I/L/F/D
    • 运行时启动器 VMLauncher

3. 测试中存在的问题记录

模块 现状
布尔类型 词法已识别 bool,但 BuiltinType 中缺失;比较运算目前回落为 int 0/1
一元/前缀运算 VM 与 IR 有 UnaryOperationInstructionParser 未注册 -x, !x
数组/切片/Map 无 AST/Type/IR 支持
结构体 / 面向对象 无 结构体、对象 节点
异常处理 无 try/catch 指令或语义
优化 Pass 未见常量折叠 / 死代码删除等
标准库 & I/O 仅语言核心,无文件/网络/控制台 API
测试矩阵 单元测试缺失e2e 样例有限
CLI/包管理 缺少 snowc 命令与包版本语义

4. 下一阶段开发路线图

优先级P0 = 当前版本必须P1 = 下一个小版本P2 = 中长期

优先级 功能 关键任务
P0 布尔类型落地 * 在 BuiltinType 中补充 BOOL
* 更新 TokenFactory.TYPES 映射
* 比较/逻辑运算返回 bool 类型
* VM 增加布尔专用指令或重用 byte
P0 一元表达式解析 * 实现 UnaryOperatorParselet-, +, !)
* 对应 UnaryOpGenerator 注册
P1 数组与切片 * 设计 ArrayType(元素类型 + 维度)
* 新增 IndexExpressionNodeNewArrayNode
* VM 扩充 ALOAD/ASTORE 指令
P1 基础标准库 * print/println, 文件读写
* 编译期内置绑定到 VM calls
P1 测试与 CI * JUnit5 单测Lexer / Parser / Semantic / VM
* CI/CD 自动构建、示例编译运行
P2 结构体 / 简单面向对象 * 结构体 语法、记录类型布局
* 方法调度:静态 or 虚表
P2 优化管线 * 常量折叠、公共子表达式消除
* 简易死代码清除
P2 错误与异常系统 * 语法:try … catch … end
* VM展开-收缩栈,异常表
P2 包管理 & CLI * snowc 命令:build, run, test
* 本地缓存 .snowpkg与包版本语义

5.1 里程碑排期

时间 目标
2025-07 发布 v0.2.0:布尔类型 + 一元运算、20+ 单元测试
2025-08 发布 v0.3.0:数组/切片 & 基础标准库;引入 CLI
2025-10 发布 v0.4.0:结构体支持、首批优化 Pass、>80% 覆盖率
2026-11 发布 v1.0.0:异常系统、稳定包管理、文档完善