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 (= | ||
| \ | > | 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() {
// ...
}
