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.