#解释器 #编程语言 #解析 #编译器 #语言

bin+lib laspa

使用 Rust 构建的简单 Lisp 类语言

4 个版本 (2 个破坏性更新)

0.3.0 2023 年 8 月 18 日
0.2.0 2023 年 8 月 12 日
0.1.1 2023 年 8 月 12 日
0.1.0 2023 年 8 月 12 日

#537编程语言

MIT 许可证

1.5MB
1.5K SLoC

包含 (Mach-o 可执行文件, 2MB) main, (Mach-o 可执行文件, 2MB) artifacts/main, (Mach-o 可执行文件, 2KB) artifacts/output.o

läspa

Build Status codecov Downloads Version License

我设计的一个玩具语言,旨在尽可能容易实现。类似于 lisp,läspa 使用 逆波兰表示法 进行基本算术运算和函数调用。实现了基本解释器后,我计划在 LLVM 的帮助下实现编译器,并生成纯机器代码。

安装

cargo install laspa

您需要 llvm 工具链来构建可执行文件。Clang 也用于链接。

brew install llvm && export LLVM_SYS_160_PREFIX='/usr/local/opt/llvm@16'

用法

请参阅 此测试文件 以获取示例语法。

A simple Lisp-like language built with Rust

Usage: laspa [OPTIONS] <FILE>

Arguments:
  <FILE>  The file to build

Options:
  -O, --optimization-level <OPTIMIZATION_LEVEL>  Optimization level for the compiler [default: 1]
  -i, --interpret                                Interpret the file
  -v, --verbose...                               Verbose output
  -o, --executable-name <EXECUTABLE_NAME>        Executable name [default: main]
      --jit                                      Execute IR with JIT
  -h, --help                                     Print help (see more with '--help')
  -V, --version                                  Print version

为什么

我在阅读一篇关于二分查找算法最快实现的 文章。我看到 llvm 并想:"嗯,制作一门语言岂不是很有趣。" 剩下的就是历史了。

重要代码

lexparseeval 函数是语言执行的核心。熟悉语言开发的人会认出这些名字。《code>llvm.rs 对生成和编译 LLVM 可执行文件的 IR 至关重要。

依赖关系

~7–16MB
~193K SLoC