Projektrahmen: Cargo-Workspace, README und PLAN

Workspace mit sechs Crates (tb-frontend, tb-vm, tb-runtime, tb-ui,
tb-cli, tb-ide) als Geruest fuer die Re-Implementierung des
DOS-BASIC-Dialekts. Binaries: tbdos (IDE/TUI) und tbdosc
(Standalone-Compiler). PLAN.md dokumentiert Phasen, Explorations-
schritte und die Abwaegung der VM-/Runtime-Optionen (Entscheidung:
eigene Bytecode-VM, TBVM).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-01 16:21:09 +02:00
commit 5821ace0cf
31 changed files with 1161 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
[package]
name = "tb-frontend"
description = "Terminal Basic: Lexer, Parser, AST und semantische Analyse"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
[dependencies]
thiserror.workspace = true
log.workspace = true

View File

@@ -0,0 +1,4 @@
//! AST-Definitionen: Module, Prozeduren (`SUB`/`FUNCTION`), Anweisungen, Ausdrücke,
//! benutzerdefinierte Typen (`TYPE … END TYPE`), Deklarationen.
// Platzhalter — wird in Phase 1 ausgearbeitet (siehe PLAN.md)

View File

@@ -0,0 +1,13 @@
//! Lexer: zerlegt Quelltext in Tokens.
//!
//! Besonderheiten des BASIC-Dialekts, die hier abgebildet werden müssen:
//! - Typ-Suffixe an Bezeichnern und Literalen (`%`, `&`, `!`, `#`, `$`, `@`)
//! - Zeilennummern und Labels
//! - Keywords sind case-insensitiv, der Editor normalisiert später auf Großschreibung
//! - Fortsetzung/Trennung von Anweisungen mit `:` und Kommentare mit `'` und `REM`
#[derive(Debug, Clone, PartialEq)]
pub enum Token {
// Platzhalter — wird in Phase 1 ausgearbeitet (siehe PLAN.md)
Eof,
}

View File

@@ -0,0 +1,17 @@
//! Frontend des Terminal-Basic-Compilers.
//!
//! Enthält Lexer, Parser, AST-Definitionen und die semantische Analyse
//! (Symboltabellen, Typprüfung, implizite Deklarationen, `DEFINT`-Regeln usw.).
//! Ausgabe des Frontends ist ein typgeprüfter AST bzw. eine Zwischen-
//! repräsentation (IR), die von `tb-vm` in Bytecode übersetzt wird.
pub mod lexer;
pub mod parser;
pub mod ast;
/// Quelltextposition für Diagnostik (1-basiert, wie im klassischen IDE-Vorbild).
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SourcePos {
pub line: u32,
pub column: u32,
}

View File

@@ -0,0 +1,6 @@
//! Parser: baut aus dem Tokenstrom den AST.
//!
//! Der Parser arbeitet zeilenorientiert (eine logische Zeile = eine oder mehrere
//! Anweisungen), wie es das IDE-Vorbild mit seiner Zeile-für-Zeile-Prüfung tut.
// Platzhalter — wird in Phase 1 ausgearbeitet (siehe PLAN.md)