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.
LDPL-RS requires cargo to install and a C++ compiler to use.
Once you've got them both, installation is a breeze:
cargo install ldpl
You should now have an ldpl-rs binary in your $PATH
that you can
use to compile simple LDPL 4.4 programs, like any of the official
examples:
git clone -b 4.4 git://github.com/lartu/ldpl
ldpl-rs ldpl/examples/99bottles.ldpl
Note the difference between the Crate name and binary. This is to avoid collision with the official LDPL compiler.
Building from source requires make and cargo.
LDPL-RS also requires a C++ compiler to build LDPL
programs, so you'll need one installed even after building the
ldpl-rs
binary.
Once you've got all that, clone and compile the project:
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
.
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 | β |
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!