1 个不稳定版本
0.1.0 | 2022年5月7日 |
---|
584 在 编程语言 中
10KB
167 行
Wysk
受Haskell、ML和Rust启发的静态类型、函数式编程语言。此语言实质上是以前(不完全)实现的所有语言的重新编写和重新设计,但强调模块化(理想情况下非单体)代码。
我在编译器开发方面经验尚浅,因此这个项目——以及其文档——非常是处于进行中的状态。
目标
以下是我希望实现的一些功能。
- 代数数据类型
- 类型类/系统重载
- Hindley-Milner 类型推断
- 可扩展记录
- 交互式字节码解释器
- LLVM JIT 编译
待办事项
- 实现项目清单序列化/反序列化器
- 设计范围以允许对源代码进行字节索引
- 线程安全的手写字符串互斥器。
- 将词素和令牌定义分开以最小化占用空间并促进错误报告
- 修改词法分析器以依赖于字节位置而不是字符索引
- 设计模块友好型和多态的抽象语法树(AST),以促进后续简化和分析阶段
- 实现解析器以允许在后续句法分析中重用代码
- 实现后解析传递以反映用户定义的运算符优先级和结合性(来自同一模块的定义或依赖项)
- 实现标识符重命名传递以识别名称冲突并为涉及实体生成唯一名称
- 在词法分析和解析中实现(卫生)宏的支持
- 改进词法分析器错误报告以包含上下文
- 将错误处理统一到自己的库中
- 美化错误消息
- 向错误消息添加建议
- 实现静态类型推断引擎(Hindley-Milner+)
- 实现全局(模块级)和局部(实体定义级)作用域的依赖关系分析
- 将实体建模为图并找到强连通分量(SCCs)以识别递归依赖关系
- 实现图归约方案
- 对字节码(以及实现简单的基于栈的虚拟机?)进行建模
- 作为字节码解释器实现REPL
- 在Rust/C中实现原语以及stdlib/prelude
- 实现无标记的G机(STG)
- 实现编译器接口
- 添加对LLVM的支持
- 实现文档生成并与其文档注释集成
一些阅读材料
以下内容可能并非直接涉及此编译器的开发,但已证明是宝贵的参考资料。