Featured Project

GerLang

Die deutsche Programmiersprache

GerLang

Moderne deutschsprachige Programmiersprache mit TypeScript-Style Fehlermeldungen und vollständiger Turing-Vollständigkeit. Deutsch. Direkt. Deklarativ.

6 stars0 forksUpdated 5 months ago

Tech Stack

PythonLexer/ParserInterpreterASTTypeScript-Style ErrorsPyInstaller

GerLang – Die deutsche Programmiersprache. Eine moderne deutschsprachige Programmiersprache mit TypeScript-Style Fehlermeldungen, professioneller Entwicklererfahrung und vollständiger Turing-Vollständigkeit. Deutsch. Direkt. Deklarativ. 🥨

🚀 Hello World in GerLang

// hello.gerl
GANZ haupt() {
    DRUCKE("Hallo, Welt! 🌍");
    WORT name = LESE("Wie heißt du? ");
    
    // String-Interpolation verwenden
    DRUCKE("Schön dich kennenzulernen, ${name}!");
    
    // Math-Funktionen testen
    GANZ zufallszahl = ZUFALLSBEREICH(1, 100);
    DRUCKE("Deine Glückszahl heute: ${zufallszahl} ✨");
    
    ZURÜCK 0;
}
$python gerlang.py run hello.gerl

🚀 Highlights

🇩🇪

Vollständig deutsche Syntax

WENN, SONST, KISTE, DRUCKE - Programmieren in deiner Muttersprache

🛡️

TypeScript-Style Errors

Präzise Fehlermeldungen mit Positionen, Farben und hilfreichen Tipps

📦

Modulsystem

Import/Export mit HOLE ... VON und GIBFREI für modulare Projekte

🔧

Fehlerbehandlung

Robuste Error-Handling mit VERSUCHE/FANGE (try/catch)

🎨

String-Interpolation

${variable} Templates für moderne String-Formatierung

Turing-vollständig

Rekursion und unbeschränkter Speicher für komplexe Programme

📊

Mehrdimensionale Arrays

Arrays mit Methoden-System (ERWEITERN, LÄNGE, etc.)

🔢

Built-in Math

WURZEL, POTENZ, ZUFALLSBEREICH und mehr out-of-the-box

🎯 Sprachfeatures

🇩🇪 Variablen und Datentypen

GANZ alter = 25;                   // Ganzzahl (int)
KOMMA preis = 19.99;              // Kommazahl (float)
WORT name = "Max Mustermann";      // String
JAIN aktiv = JA;                   // Boolean (JA/NEIN)
KISTE zahlen = [1, 2, 3, 4, 5];   // Array

🔄 Kontrollstrukturen

WENN (alter >= 18) {
    DRUCKE("Erwachsen");
} SONST {
    DRUCKE("Minderjährig");
}

SOLANGE (aktiv) {
    DRUCKE("Läuft...");
    aktiv = NEIN;
}

FÜR (GANZ i = 0; i < 10; i = i + 1) {
    DRUCKE("Zähler: ${i}");
}

📦 Modulsystem

// math.gerl - Modul exportieren
GIBFREI GANZ addiere(a: GANZ, b: GANZ) {
    ZURÜCK a + b;
}

// main.gerl - Modul importieren  
HOLE addiere VON "math.gerl";

GANZ haupt() {
    GANZ summe = addiere(5, 3);
    DRUCKE("Summe: " + summe);
    ZURÜCK 0;
}

🛡️ TypeScript-Style Fehlermeldungen

GerLang bietet präzise, farbige Fehlermeldungen mit Call-Stack für perfektes Debugging:

Fehler GL006: Division durch Null
  --> test.gerl:6:14
   |
  5 |     GANZ b = 0;
  6 |     ZURÜCK a / b;  // Division durch Null
   |              ^
  7 | }
   |
   Division oder Modulo durch Null ist nicht erlaubt
   = Tipp: Prüfe den Divisor vor der Operation

Call-Stack:
  0: test_division() at test.gerl:15:32

🔧 Moderne Features

String-Interpolation

WORT name = "Max";
GANZ alter = 25;
DRUCKE("Hallo ${name}, du bist ${alter}!");
DRUCKE("Nächstes Jahr: ${alter + 1}");

Math-Funktionen

KOMMA radius = 5.0;
KOMMA flaeche = POTENZ(radius, 2) * 3.14;
DRUCKE("Fläche: ${RUNDEN(flaeche, 2)}");
GANZ wuerfel = ZUFALLSBEREICH(1, 6);

Array-Methoden

KISTE liste = [1, 2, 3];
liste.ERWEITERN(4);  // [1, 2, 3, 4]
GANZ anzahl = liste.LÄNGE;
DRUCKE("Elemente: ${anzahl}");

Fehlerbehandlung

VERSUCHE() {
    GANZ result = risiko_operation();
} FANGE fehler {
    DRUCKE("Fehler: ${fehler}");
}

🚀 Beispiele

Fibonacci-Zahlen (Rekursion)

GANZ fibonacci(n: GANZ) {
    WENN (n <= 1) {
        ZURÜCK n;
    }
    ZURÜCK fibonacci(n - 1) + fibonacci(n - 2);
}

GANZ haupt() {
    FÜR (GANZ i = 0; i < 10; i = i + 1) {
        DRUCKE("Fibonacci(" + i + ") = " + fibonacci(i));
    }
    ZURÜCK 0;
}

Interaktives Zahlenraten

GANZ haupt() {
    GANZ geheimzahl = 42;
    WORT eingabe;
    
    DRUCKE("=== Zahlenraten ===");
    DRUCKE("Ich denke an eine Zahl zwischen 1 und 100!");
    
    SOLANGE (eingabe != "42") {
        eingabe = LESE("Dein Tipp: ");
        
        WENN (eingabe == "42") {
            DRUCKE("🎉 Richtig geraten!");
        } SONST {
            DRUCKE("Leider falsch, versuch es nochmal!");
        }
    }
    
    ZURÜCK 0;
}

🔧 CLI-Kommandos

$
python gerlang.py run <datei.gerl>

GerLang-Programme ausführen

$
python gerlang.py tokens <datei.gerl>

Token-Analyse anzeigen

$
python gerlang.py ast <datei.gerl>

AST-Struktur anzeigen

$
python gerlang.py repl

Interaktive Shell (in Entwicklung)

$
./bin/gerlc.exe run <datei.gerl>

Vorkompilierte EXE-Version (Windows)

🎉 Status & Roadmap

✅ Vollständig implementiert (v4.1.0)

  • Deutsche Syntax und Keywords
  • TypeScript-Style Fehlermeldungen
  • Modulsystem (Import/Export)
  • Fehlerbehandlung (Try/Catch)
  • Mehrdimensionale Arrays
  • Interaktive Ein-/Ausgabe
  • Call-Stack und Debugging
  • String-Interpolation

🔄 In Entwicklung

  • REPL (Interactive Shell)
  • Maps/Dictionaries (KARTE)
  • String-Methoden (AUFTEILEN, ERSETZEN)
  • Strukturen/Objekte (ORDNUNG/DING)
  • Array-Methoden (SORTIEREN, FILTERN)

🌟 Zukunft

🚀Compiler (statt Interpreter)
📚Standardbibliothek
🔌LSP (Language Server Protocol)
🎯Debugger mit Breakpoints

📚 Dokumentation

🚀

Schnellstart

SPRACHE.md

🎮

Beispiele

BEISPIELE.md

FAQ

Häufige Fragen

🔢

Operatoren

Arithmetik & Logik

📝

Syntax

Best Practices

🛡️

Error-Handling

Try-Catch System

💬

Ein-/Ausgabe

DRUCKE & LESE

📊

Arrays

Mehrdimensional

Funktionen

Rekursion & mehr

🔧 Technologie

Python 3.10+Custom LexerAST ParserInterpreterPyInstallerVS Code Extension
v4.1.0MIT License6 ⭐ auf GitHub

"Deutsch. Direkt. Deklarativ. – GerLang, die Programmiersprache, die sogar deine Oma versteht! 🥨🚀"