自制编程语言比想象中容易也更具挑战2026 年 5 月 6 日。去年 12 月中旬作者开始打造自己的编程语言目前距生产级质量有差距但已编写约 1000 行代码的蒙特卡罗路径追踪器。项目暂停作者分享相关内容。作者声明并非专业编程语言设计师或编译器实现者此语言不旨在取代 C/C/Rust 等也不确定能否广泛应用只是享受过程。引言为何是现在作者从事编程约 17 年此时决定开发新语言是因三个因素交汇一直想打造真正面向生产环境的语言开发的大型游戏适合模组开发自定义编程语言是简单解决方案2025 年 12 月 Matt Godbolt 推出的系列让作者燃起研究汇编的兴趣。模组开发作者对模组开发有三点考虑包括直接处理组件指针迭代、实现沙箱化、简化开发。常见选择如 Lua 沙箱化困难C 模组分发和沙箱化有问题且这些问题也适用于 Rust 等语言。设计目标作者期望语言与 C 无缝互操作、可进行底层操作、实用且符合人体工程学、易于沙箱化、编译器占用空间小、编译快速、真正跨平台、速度合理、避免简单复制 C。语言特性概述语言暂用名 pslang是命令式、立即求值、按值调用的底层编程语言有静态、严格和标称的类型系统。介绍了作用域、基本类型、数字字面量、数组、函数类型、指针、结构体、内存布局、空类型、变量、函数、声明顺序、控制流、外部函数、类型转换、运算符等特性。编译器架构项目拆分为 types、ast、parser、ir、interpreter、jit 等库解释器和编译器是使用这些库的命令行应用程序嵌入语言只需 parser 和 jit 库。解析器使用 Bison 解析器生成器有词法分析器语法和解析器语法修复了语法中的移进 - 归约冲突生成 C 解析器类解决了多文件解析问题解析器输出是表示解析文件 AST 的 C 对象。缩进处理因缩进使语法非上下文无关采取将每行作为独立语句解析并附带缩进级别数字通过简单线性处理解决作用域问题。类型检查解析完成后先解析所有标识符再检查和推断所有类型。解释器目前是“树遍历解释器”处于不稳定状态计划用 IR 重写。无法执行 foreign 函数可输出内部状态用于调试。编译器版本 12026 年 1 月为 M1 Mac 架构编写 JIT 编译器编译器高层部分较直接但涉及特定平台问题较棘手生成指令时自己编写以精简编译器。Aarch64 架构特性Aarch64 指令为 32 位常量处理、栈操作、调用约定等方面有特殊情况增加了编译器的复杂度。中间表示IR为复用代码、简化编译器编写和添加优化使用类似 SSA 的 IR但允许节点重新赋值且不使用 phi 节点。IR 处理结构体较棘手有特殊节点处理嵌套字段。编译器版本 2使用 IR 重写 Aarch64 编译器分为 AST - IR 编译器和 IR - Aarch64 编译器后者目前较差但预计使用寄存器分配器后会改善。未来规划编译器/解释器方面计划使用标准线性扫描分配器添加常量传播、算术简化等 IR 优化重写 IR 解释器支持生成可执行文件支持 DWARF 调试信息格式进行调试。语言特性方面文档未完整提及。