#语言 #学习 #编程语言 #解析器 #解析器实现

已删除 lynx_lang

学习编程语言制作的科普项目

0.1.0 2022年9月20日

#7#解析器实现

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

交互式解释器

无运行时依赖