1个不稳定版本
0.1.1 | 2022年9月20日 |
---|
#550 在 编程语言 中
110KB
3K SLoC
Lynx-Lang
🐱 Lynx-Lang
是一个学习如何制作编程语言的教育项目。
先决条件
确保已预先安装 rustup。
构建
cargo build --release
测试
cargo test
覆盖率测试
sh coverage.sh
在浏览器中检查 coverage/index.html
lib.rs
:
Lynx 是一个基于 The Monkey Language
以及书籍的 lynx 语言规范的解释器。它是一个旨在学习如何制作编程语言的教育库。它也是像我这样的新手 Rustaceans 制作的项目。这个库中的代码包括大量注释和测试用例。整个想法来自著名的书籍 The Monkey Language
。当我有时间重新开始这个项目时,我还有扩展它的想法。
通常,解释器由三个主要部分组成,在 src
文件夹中分别分割。
一个标记化器将输入文本或流标记为标记。
有时,一个简单的数字可以是一个 Number
标记;
1 // Token::Number
词法分析器
std::iter::FromIterator;
std::iter::Peekable;
std::str::CharIndices;
解析器
- pratt 解析
std::slice::Chunks
std::ops::Deref;
评估器
// let foo1 = 2;
// outer = Env {
// store: {
// print: fn (),
// foo1: 2
// },
// outer: None
// }
// fn call_fn(foo) {
// let bar = 1;
// return foo + bar;
// }
// call_fn(foo1)
// ScopedEnv {
// store: {
// bar: 1
// },
// outer: outer
// }