Einstieg

Der MARLA-Compiler ist ein Python-Programm. Er läuft auf dem PC und erzeugt eine C-Datei. Für einen Testlauf auf dem PC reicht danach ein normaler C-Compiler; für den Arduino Uno braucht man avr-gcc.

Installieren

Voraussetzung: Python 3.11 oder neuer und ein C-Compiler (cc bzw. gcc).

git clone https://github.com/blueberrye-io/marla.git
cd marla
python3 -m venv .venv
.venv/bin/pip install -e . pytest
.venv/bin/python -m pytest -q        # alle Tests sollten grün sein

Das erste Programm

Das Beispiel examples/blink.mar lässt eine LED blinken. Übersetzen:

.venv/bin/marla compile examples/blink.mar -o build/blink.c

Heraus kommt build/blink.c, eine normale C-Datei. Ein Blick hinein lohnt sich: Jede Zeile trägt einen Verweis auf die Zeile im MARLA-Quelltext.

Auf dem PC laufen lassen

Damit man nicht für jeden Versuch ein Board braucht, gibt es eine Host-HAL: Sie druckt, was auf dem Board passieren würde.

make host SRC=examples/blink.mar
./build/blink_host

Statt einer blinkenden LED erscheinen Zeilen wie LED AN und warte 500 ms.

Auf den Arduino Uno

Dafür braucht es die AVR-Werkzeuge. Auf dem Mac:

brew tap osx-cross/avr && brew install avr-gcc avrdude

Dann bauen, Größe prüfen und flashen:

make                                   # build/blink.hex
make size                              # wie viel Flash und RAM belegt sind
make flash PORT=/dev/cu.usbmodem1101   # Port mit ls /dev/cu.* finden

make size ist Absicht: Auf einem ATmega328P mit 2 KB RAM will man sehen, was jedes Sprachmittel kostet.

Wenn etwas falsch ist

Der Compiler bricht mit Datei, Zeile, Spalte und einer Markierung ab. Die Meldungen sind Teil der Testsuite: Im Ordner tests/programs/err/ liegen absichtlich falsche Programme, und in Zeile 1 steht jeweils, welche Meldung erwartet wird. Ein Python-Traceback statt einer Meldung gilt als Fehler im Compiler.


Erstellt: 05.11.2026