最近我一直在忙着Aiki的事情,过去几天尤为密集。下周我就要回到本职工作——我是Tarleton State University的计算机信息系统教授。所以,我正利用暑假的最后窗口期,把几件相关的工作收尾。
当前状态标记为v0.4.0-alpha-26。我不打算为每一个这样的节点都创建GitHub Release。master分支会随着开发持续推进,而tag标记的是值得驻足的里程碑状态。
![]()
第一个公开的alpha版本其实已经包含了语言本体的绝大部分:精确有理数运算、从左到右的求值顺序、一等函数、递归与迭代、管道、形状化数据、模块、可恢复错误、隔离并发、图形、标准库、语义剖析、可执行文档、行为测试金标、文法覆盖率测试,以及一套相当可观的约束框架。此后的大部分工作并没有显著扩大语言表面,而是让表面之下的相互关系变得更加严密。
alpha之后的第一个实质性工作是换行处理。grammar.ebnfx文件描述了产生式,但一部分实际的语法表面规则仍然住在解析器代码里:物理换行是否会终结一条语句,取决于一个私有的完成集合和定界符抑制逻辑。现在,这条规则完整地迁移到了语法定义中。解析器消费它、帮助系统展示它、静态结构分析也能推导出它的相应后果。
这个重构过程暴露了既有语言中的几个有用事实。有些记号(如(、[和-)初看起来像是有问题的续行,实际上在语句终结后会被解析为新表达式的开头。另一些续行形式则会被当前规则明确地阻断。另外还有一个边界情况:以}结尾的函数字面量会暴露新的问题,因为}本身可以结束一个表达式,但它并不属于换行完成集合的成员。我并没有为了让规则更对称而去改动这些语言层面的选择,它们现在成了可见的设计问题,而不是被隐埋在行为背后的实现细节。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.