1 unstable release

0.1.0 Apr 30, 2020

#419 in Programming languages

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

LDPL in Rust

LDPL is a powerful compiled programming language designed from the ground up to be excessively expressive, readable, fast and easy to learn. It mimics plain English, in the likeness of the good parts of older programming languages like COBOL, with the desire that it can be understood by anybody. LDPL was designed to run on Unix systems, including AMD-64 Linux, macOS, ARMv8 Linux, Android Termux and both Intel and PowerPC OS X (tested from Tiger 10.4 onwards). It even supports UTF-8 out of the box.

— The Official LDPL Repository


This is an experimental LDPL 4.4 compiler written in Rust. Like the official compiler, LDPL code is translated to C++ code and then compiled into a standalone binary. Generated code should be 100% compatible with the official compiler, meaning LDPL-RS should work just fine with regular LDPL extensions.

Building It

LDPL-RS requires make, cargo, and Rust to build, and a C++ compiler to use.

Once you've got all that, building is a breeze:

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

If that works, you've successfully built an ldpl-rs binary that you can use to compile any of the official LDPL examples:

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

You can also use the "run" command to build and run a file in one go:

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

To take it with you, just copy ldpl-rs to /usr/local/bin or something else in your $PATH.

Status

This project is in its infancy, but can compile simple LDPL programs. It supports all LDPL 4.4 statements, including C++ extensions, and can compile and run all the examples that shipped with LDPL 4.4. It can also compile Gild and ldpl-todo.

It passes 11 of 12 of the official LDPL tests.

However, these features are currently unsupported (but coming soon):

  • nested collections (NUMBER LIST LIST LIST)
  • OF syntax (LIST OF NUMBERS)

To run the tests, clone this project (instructions above) and run:

make test

LDPLTest Pass/Fail Status

Test Status Failure Reason
basicar
basictx
conflow
exec
explode
fibo
file
list
of OF syntax
quine
sqrt
vector

LDPL Examples Pass/Fail Status

Example Status Failure Reason
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

License

The LDPL-RS Compiler is distributed under the Apache 2.0 License, same as the official LDPL compiler. All LDPL Dinosaur logos where created by Lartu and are released under a Creative Commons Attribution 4.0 International (CC BY 4.0) license.

Portions of LDPL-RS are copied directly from LDPL. Thank you to the LDPL community for all their contributions!

Dependencies

~2–2.8MB
~57K SLoC