Inhaltsverzeichnis

Lyx – Syntax

Diese Seite bietet eine kompakte, technische Übersicht über die Syntax und Semantik der Sprache Lyx (Stand v0.5.7).

1) Lexikalische Regeln

Kommentare

Zeilenkommentar:

//

bis Zeilenende\ Blockkommentar:

/* ... */

(nicht verschachtelt)

Identifier

Muster:

[A-Za-z_][A-Za-z0-9_]*

\ Case-sensitive: Unterscheidung zwischen Groß- und Kleinschreibung.

Literale & Suffixe

Typ Beispiel Suffix
Integer (64-bit) 42 (Standard)
Integer (spezifisch) 42i8, 255u8 i8, i16, i32, u8, u16, u32, u64
Float (64-bit) 3.14 (Standard)
Float (32-bit) 3.14f32 f32
Probabilistisch 0.5q q (für QBool)
String „Hello\n“ \n, \t, \r, \\, \„, \0

2) Variablen & Speicherklassen

Lyx unterscheidet strikt zwischen Veränderbarkeit und Speicherort.

Keyword Modus Ort Beschreibung
var mutable Stack/Data Veränderbare Variable.
let immutable Stack/Data Einmalige Zuweisung zur Laufzeit.
co readonly Stack Schreibgeschützter Stack-Slot.
con constant Code Compile-zeit Konstante (Immediate).

Beispiel:

var counter: int64 := 0;
pub let APP_NAME: pchar := "Lyx Compiler";
con MAX_BUFFER := 1024;

3) Kontrollfluss

Bedingung (if/else)

if (x > 10) {
print_str("Groß");
} else {
print_str("Klein");
}

Schleifen (while/for/repeat)

// For-Schleife
for i := 1 to 10 do {
print_int(i);
}
 
// While-Schleife
while (i < 10) {
i++;
}
 
// Repeat-Until
repeat {
i++;
} until (i == 10);

Pattern Matching (v0.5.0)

match (status) {
case 200:      print_str("OK");
case 400..499: print_str("Client Error");
case 500, 503: print_str("Server Error");
default:       print_str("Unknown");
}

4) Objektorientierung (OOP)

Lyx unterstützt Klassen (Heap) und Strukturen (Stack).

type Player = class extends TObject {
id: int64;
 
fn Create(newId: int64) {
    self.id := newId;
}
 
fn speak() {
    print_str("I am a player.");
}
};
 
// Verwendung
var p: Player := new Player(1);
p.speak();
dispose p; // Manuelle Freigabe

5) Spezielle Operatoren

Operator Name Beschreibung
:= Zuweisung Trennung von Vergleich (==) und Zuweisung.
\> Pipe Datenfluss von links nach rechts: val \> abs().
?. Safe Call Memberzugriff nur, wenn Objekt nicht null ist.
?? Coalesce Fallback-Wert: name ?? „Gast“.
as Cast Explizite Typkonvertierung: x as f64.

6) Energy-Aware Pragmas (v0.5.7)

Der Compiler kann den Energieverbrauch pro Funktion optimieren:

@energy(1) // Low Power Mode
fn check_sensors() {
// ...
}