跳到正文豫言技术文档

豫言 / 技术规范

本篇描述 4cdeca1 的实现。版本与适用边界见基线说明。

基线与实现依据

本篇记录技术规范与现有实现的对应关系,供文档审阅与后续维护。正文须足以说明算法和接口;源码链接用于追溯,不代替正文中的规则。

据一:固定基线

本规范对应提交 4cdeca11600fed16338793a494b6eecaae94485a。语言语义、静态检查边界和目标 ABI 应分别理解:同一语言可以有不同实现,但两个模块要互操作,就必须遵守同一目标的值、调用和回收契约。

ABI 兼容不要求同一优化器、同一临时变量名或逐字节相同的机器码。它要求消费者无需识别生产者,就能按约定读取其值、调用其函数、接收返回结果,并在异常与垃圾回收后继续运行。

据二:实现依据

文档主题 本基线源码 应核对的内容
词法 词法解析 扫描状态、空白、嵌套注释、字符串转义
数字 整数小数解析 逐位数字、分隔符、原始小数文本
结合关系 文言符集 68 条显式关系及顺序后备规则
声明 抽象语法分析 签名配对、自动递归、自由名称识别
名称 名称解析 局部与顶层次序、打开优先级、默认导入展开的多文件名投影
类型形成 类型类型检查 合法类型结构、类型应用限制
双向检查 类型检查工具、对象类型检查 合成与检查的不同入口和错误条件
隐参 函数应用隐式参数合成 实参预读、期望类型、饱和限制
名义相等 模式合一结构比较 文件与名称决定身份,编号不是静态身份
调用降级 隐式参数擦除 源码足参检查与机器逐参调用的区别
闭包 正则前闭包转换 self、代码项、捕获环境
递归 递归节点闭包前变换 单槽自引用的建立及填充次序
符号 编译过程工具 源身份转义、全局与函数名
WasmGC 统一网页汇编、GC 运行时 引用类型、逐参函数、表索引、动态退出

据三:ABI 阅读示例

以文档约定描述,不另提供实现程序。设 甲 是一个二参数源函数的闭包:

  1. 源码的 甲 于 a 于 b 先通过足参检查。
  2. 机器取 甲 的代码项,以(甲,a)调用,得到中间闭包 乙。
  3. 再取 乙 的代码项,以(乙,b)调用;这次返回最终结果。

源语言拒绝部分应用,与机器使用中间闭包没有矛盾;前者是接受规则,后者是 ABI。若重实现将 甲 改成一次读取两个实参的闭包,却仍保留同一公共名,旧调用者就不能正确使用它。

据四:文档完整性准则

每个语法形式应有树构造和拒绝条件,每种核心表达式应有类型与求值规则,每个跨模块接口应有字段位置、宽度、实参次序、生命周期及调用者/被调用者责任。涉及兼容缺陷时,同时写明当前事实和可保证的范围。

审阅重点是陌生实现者是否仍需猜测:类型检查与运行时参数分组是否混淆,源路径与符号身份是否遗漏,GC 是否会移动局部持有的引用,内建声明与宿主导入是否使用实际的原语与边界签名。双语正文应表达相同条件,不能省略限制而产生两套规范。