#learning #language #programming-language #parser

nightly lynxlang

学习编程语言制作的教育项目

1个不稳定版本

0.1.1 2022年9月20日

#550编程语言

MIT 许可证

110KB
3K SLoC

Lynx-Lang

CI Code Coverage

🐱 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
// }

交互式编程环境

无运行时依赖