Skip to content
Meir Cohen edited this page Oct 14, 2020 · 37 revisions

Lumi Programming Language Development Wiki

Welcome to the lumi-lang repository Wiki!

This repository is for developing the Lumi language syntax and compilers.

This Wiki is for information on contributing to Lumi, see docs for Lumi language documentation.

Development Environment Setup

  1. It's recommended to develop Lumi in a Unix-like environment - preferably a Linux machine, because the tests scripts are currently based on Unix shell-scripts

  2. For Lumi syntax highlighting it's recommended to use Atom editor with language-lumi package installed

  3. Lumi repository requires commits to it to be verified by GitHub - make sure this is configured for your GitHub user

  4. Install the packages listed in packages.txt, may be done using a package manager such as apt

  5. Clone Lumi repository into your environment and go to its root directory

  6. Install python dependencies by running pip3 install -r docs/requirements.txt

  7. Run .\test.sh, this shell-script will run all Lumi development tests

  8. If the test script succeeds your environment is properly setup - happy coding 😃

How can I help?

Chose your difficulty:

Easy

Review the docs and notify me on any problem, question or suggestion you have about the concepts or the syntax of the language.

Medium

Add features to the Lumi standard library.

Hard

Review or add features to the future Temporary Lumi 5 (TL5) compiler.

Compiler developing process

Lumi language compiler developing is done in an iterative style, where in each step a compiler is written to a temporary Lumi language - "TL" - which is a partial (or different) syntax of the final Lumi language.

These temporary Lumi languages are marked as "TL[number]" where "number is the iteration step number. "TL0" is the initial compiler temporary Lumi language, the next iteration will be TL1 and so on... Files written in a temporary Lumi languages TL[n] should have a prefix of .[n].lm.

Each compiler will be written in a temporary Lumi language and will be compiled into C. Note that each compiler can be written in TL[n] but compile TL[m] code, where "m" can be different that "n". For example - tl2-compiler.1.lm is a code file written in TL1 that implements a compiler for TL2.

The iteration will roughly be:

  1. Write TL0 compiler with C
  2. Write TL0 compiler with TL0, and compile it to C using the C TL0 compiler
  3. Write TL1 compiler with TL0, and compile it to C with the the TL0 compiler
  4. Write TL2 compiler with TL1, and so on...

Temporary Lumi languages features

  1. TL0 Features
  2. TL1 Features
  3. TL2 Features
  4. TL3 Features
  5. TL4 Features
  6. TL5 Features

Clone this wiki locally