Files
TerminalBasic/README.md
Chili Palmer 333e794540 Phase 1: Sprach-Frontend (Lexer, AST, Parser, Semantik) + Entscheidungen
Frontend:
- Lexer komplett: Typ-Suffixe, Literal-Typisierung (Entscheidung: > 7
  signifikante Stellen -> DOUBLE), Hex/Oktal, Zeilenfortsetzung mit _,
  Strings mit ""-Escape, case-insensitive Keywords (Bibliotheksnamen
  bleiben Bezeichner)
- AST fuer Module/Prozeduren/Anweisungen/Ausdruecke
- Parser: fehlertolerant, zeilenorientiert; Kern-Anweisungssatz inkl.
  Bloecke, ON [LOCAL] ERROR, DEF FN (einzeilig); Datei-E/A als
  Phase-3-Platzhalter
- Semantik: Symboltabellen, implizite Deklaration, DEFtype, OPTION
  EXPLICIT, Arrays, Builtin-Signaturen, Labelpruefung; Hardware-Features
  (PEEK/POKE/...) werden zur Compile-Zeit abgewiesen
- Meilenstein: Testkorpus parst und wird typgeprueft (corpus.rs); 27 Tests

Entscheidungen eingearbeitet:
- Binaries heissen tb (IDE) und tbc (Compiler)
- Dynamische Terminalgroesse statt 80x25 (Minimum 80x25, btop-artiger
  Hinweis darunter); tb-ui::screen mit resize(), Spike angepasst
- Vollstaendigkeits-Leitplanke: 100% Sprache/Stdlib minus deklarierte
  Non-Features; Original-Doku als Guiding Principle; Inventar-Aufgabe
- CURRENCY als i64-Festkomma; ISAM wird implementiert; breite Zeichen
  belegen 2 Zellen; GET/PUT-Strings als UTF-32; Blink als hell simuliert
- LICENSE: MIT

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 09:16:01 +02:00

77 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Terminal Basic
Eine plattformübergreifende **Re-Imagination** des letzten großen BASIC-Dialekts
für DOS (1992) — Sprache, Laufzeitbibliothek, Forms-Engine und IDE — in Rust,
mit [Ratatui](https://ratatui.rs) als Terminal-UI-Schicht.
> Dieses Projekt ist eine unabhängige Neuentwicklung und steht in keiner
> Verbindung zu Microsoft. Produktnamen Dritter werden bewusst nicht verwendet.
## Leitbild
Terminal Basic ist keine sklavische 1:1-Reimplementierung, sondern eine
spirituelle Neuauflage: ein BASIC, mit dem man heute **Terminal-Tools baut**
CLI-Werkzeuge ebenso wie TUI-Anwendungen. Der Weg dorthin:
1. **Erst die Re-Imagination:** gleiche UI/UX wie das Vorbild, gleicher
Sprachstandard, gleiche Standardbibliothek. Wer das Vorbild kannte, fühlt
sich sofort zu Hause; bestehende Programme laufen weitgehend unverändert.
2. **Dann die Anreicherung:** über die Zeit kommen bewusst Elemente außerhalb
des Vorbilds dazu (moderne Terminal-Fähigkeiten, Sprachkomfort,
Bibliotheken). Erweiterungen sind additiv und brechen den Kernstandard
nicht.
Wo Alt und Neu kollidieren, gewinnt die Plattform von heute — deshalb z. B.
durchgängig UTF-8 statt Codepage 437 und keine Emulation von DOS-Hardware.
## Ziele
- **Volle Sprachkompatibilität**: alle Sprachelemente des Dialekts —
Prozeduren (`SUB`/`FUNCTION`), benutzerdefinierte Typen, `GOSUB`,
`ON ERROR`/`RESUME`, Typ-Suffixe, feste und dynamische Arrays,
`PRINT USING`, `DATA`/`READ` usw.
- **Volle Library-Kompatibilität für die DOS-Oberflächenprogrammierung**:
die ereignisgesteuerte Forms-Engine mit allen Steuerelementen, Menüs,
Maus- und Tastaturereignissen, nachgebildet auf einem emulierten
Textbildschirm (16 Farben) über Ratatui. Bewusste Modernisierungen:
durchgängig UTF-8/Unicode statt Codepage 437, und **dynamische
Terminalgröße** statt festem 80×25 — IDE und erzeugte Programme passen
sich der Fenstergröße an (Mindestgröße 80×25; darunter erscheint nur
ein Hinweis, wie bei btop).
- **Plattformübergreifend**: läuft in Terminals unter Linux, macOS und Windows.
- **Compiler + VM**: der Compiler erzeugt Bytecode für eine eigene virtuelle
Maschine (TBVM); die Abwägung der Runtime-Optionen ist in
[PLAN.md](PLAN.md) dokumentiert.
- **IDE im Terminal**: Nachbildung der klassischen DOS-IDE mit Editor,
Formular-Designer, Direktfenster und Debugger.
## Aufbau des Workspace
| Crate | Inhalt |
|---|---|
| `tb-frontend` | Lexer, Parser, AST, semantische Analyse |
| `tb-vm` | Bytecode-Format, Codegenerator, virtuelle Maschine (TBVM) |
| `tb-runtime` | Laufzeitbibliothek: Strings, Mathematik, Datei-E/A, Datum/Zeit, Fehlercodes |
| `tb-ui` | Textbildschirm-Emulation und Forms-Engine auf Ratatui |
| `tb-cli` | `tbc`: Standalone-Compiler — wandelt Quellen und Projekte in binäre Ergebnisse um |
| `tb-ide` | `tb`: die integrierte Entwicklungsumgebung (TUI) zum Erstellen von Programmen |
## Status
Projektrahmen. Die Implementierungs- und Explorationsschritte sind in
[PLAN.md](PLAN.md) beschrieben; dort wird der Fortschritt fortgeschrieben.
## Bauen
```
cargo build
cargo run -p tb-cli # tbc — Standalone-Compiler
cargo run -p tb-ide # tb — IDE (TUI)
```
Benötigt wird nur eine aktuelle stabile Rust-Toolchain.
## Lizenz
MIT — siehe [LICENSE](LICENSE).