#编译器 #语言 #扩展

bin+lib ldpl

LDPL 4.4 编译器,使用 Rust 实现

1 个不稳定版本

0.1.0 2020 年 4 月 30 日

#386编程语言

Apache-2.0 许可

110KB
2.5K SLoC

Rust 1.5K SLoC // 0.0% comments C++ 653 SLoC // 0.1% comments Pest 297 SLoC // 0.2% comments

LDPL + Rust

Rust 中的 LDPL

LDPL 是一种功能强大的编译型编程语言,旨在从底层设计成非常易表达、易读、快速且易于学习。它模仿普通英语,类似于 COBOL 等较老编程语言的优点,希望任何人都能理解。LDPL 被设计在 Unix 系统上运行,包括 AMD-64 Linux、macOS、ARMv8 Linux、Android Termux 以及 Intel 和 PowerPC OS X(从 Tiger 10.4 开始测试)。它甚至默认支持 UTF-8。

官方 LDPL 仓库


这是一个实验性的 LDPL 4.4 编译器,使用 Rust 编写。与官方编译器一样,LDPL 代码被转换为 C++ 代码,然后编译成独立的可执行文件。生成的代码应与官方编译器 100% 兼容,这意味着 LDPL-RS 应该可以很好地与常规 LDPL 扩展一起工作。

构建它

LDPL-RS 需要 makecargoRust 来构建,并需要一个 C++ 编译器 来使用。

一旦你有了所有这些,构建就非常简单

git clone git://github.com/xvxx/ldpl-rs
cd ldpl-rs
make

如果构建成功,你就成功构建了一个 ldpl-rs 可执行文件,你可以使用它来编译任何官方 LDPL 示例

git clone -b 4.4 git://github.com/lartu/ldpl
./ldpl-rs ldpl/examples/99bottles.ldpl

你还可以使用 "run" 命令一次构建并运行一个文件

./ldpl-rs run ldpl/examples/99bottles.ldpl
99 bottles of beer on the wall...

要携带它,只需将 ldpl-rs 复制到 /usr/local/bin 或你的 $PATH 中的其他位置。

状态

该项目尚处于起步阶段,但可以编译简单的 LDPL 程序。它支持所有 LDPL 4.4 语句,包括 C++ 扩展,并且可以编译和运行 LDPL 4.4 附带的所有示例。它还可以编译 Gildldpl-todo

它通过了 官方 LDPL 测试 中的 11 个测试。

然而,以下功能目前不受支持(但即将推出)

  • 嵌套集合(NUMBER LIST LIST LIST)
  • OF 语法(LIST OF NUMBERS)

要运行测试,克隆该项目(如上所述)并运行

make test

LDPLTest 通过/失败状态

测试 状态 失败原因
basicar
basictx
conflow
exec
explode
fibo
file
list
of OF 语法
quine
sqrt
vector

LDPL 示例 通过/失败状态

示例 状态 失败原因
99bottles.ldpl
absolutevalue.ldpl
arguments.ldpl
bellman-ford.ldpl
brainfuck.ldpl
disancount.ldpl
euler.ldpl
explode.ldpl
factorial.ldpl
fibonacci.ldpl
floyd-warshall.ldpl
helloworld.ldpl
leapyear.ldpl
loop_counter.ldpl
oddornot.ldpl
quine.ldpl
sqrt.ldpl
strcmp-demo.ldpl

许可

LDPL-RS 编译器遵循 Apache 2.0 许可协议,与官方 LDPL 编译器相同。所有 LDPL 恐龙标志均由 Lartu 创建,并发布在创意共享署名 4.0 国际 (CC BY 4.0) 许可下。

LDPL-RS 的一些部分直接复制自 LDPL。感谢 LDPL 社区所有贡献!

依赖

~3MB
~60K SLoC