Official repository of the JAPL language
Go to file
nocturn9x 50d171de83 Added support for break (thanks dictu) 2020-08-20 22:51:56 +02:00
examples Laid initial nim project structure and fixed a bug with inheritance 2020-08-02 11:04:01 +02:00
nim Added support for break (thanks dictu) 2020-08-20 22:51:56 +02:00
python Refactored directories and fixed visibility of lex() procedure in lexer.nim 2020-08-06 00:28:32 +02:00
.gitignore Removed gitignore and updated old one 2020-08-13 23:47:29 +02:00
LICENSE Initial commit 2020-07-29 16:09:40 +02:00
README.md Updated readme 2020-08-10 10:56:34 +02:00

README.md

japl

JAPL is an interpreted, dynamically-typed and minimalistic programming language

J.. what?

You may wonder what's the meaning of JAPL: well, it turns out to be an acronym for Just Another Programming Language, but beware! Despite the name, the name is actually read like "JPL".

Some backstory

JAPL is born thanks to the amazing work of Bob Nystrom that wrote a book available completely for free at this link, where he describes the implementation of a simple language called Lox.

What has been (or will be) added from Lox

  • Possibility to delete variables with the del statement
  • break statement
  • continue statement (Coming Soon)
  • multi-line comments
  • Nested comments
  • Generators (Coming soon)
  • A decent standard library with collections, I/O utilities and such (Work in progress)
  • Modulo division (%) and exponentiation (**)
  • OP_CONSTANT_LONG OpCode is implemented
  • Differentiation between integers and floating point numbers

Other than that, JAPL features closures, function definitions, classes, inheritance and static scoping. You can check the provided example .jpl files in the repo to find out more about JAPL.

Disclaimer

This project is currently a WIP (Work in Progress) and is not optimized nor complete. The first version of the interpreter is written in Python, but a bytecode stack-based VM written in nim is being developed right now.

For other useful information, check the LICENSE file in this repo.

Contributing

If you want to contribute, feel free to send a PR!