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 在 编程语言
1.5MB
1.5K SLoC
包含 (Mach-o 可执行文件, 2MB) main, (Mach-o 可执行文件, 2MB) artifacts/main, (Mach-o 可执行文件, 2KB) artifacts/output.o
läspa
我设计的一个玩具语言,旨在尽可能容易实现。类似于 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
并想:"嗯,制作一门语言岂不是很有趣。" 剩下的就是历史了。
重要代码
lex
、parse
和 eval
函数是语言执行的核心。熟悉语言开发的人会认出这些名字。《code>llvm.rs 对生成和编译 LLVM 可执行文件的 IR 至关重要。
依赖关系
~7–16MB
~193K SLoC