Files
TerminalBasic/openspec/changes/projektmodule-und-kompilat/specs/sprach-frontend/spec.md

2.6 KiB

MODIFIED Requirements

Requirement: Diagnostik mit Vorbild-Meldungen

Diagnosen SHALL exakte 1-basierte Quelltextpositionen (Zeile, Spalte) tragen; die Meldungstexte SHALL dem Katalog des Vorbilds folgen, wo eine Entsprechung existiert (z. B. „Type mismatch", „Duplicate definition", „Label not defined", „Subprogram not defined", „Overflow").

Bei Projekten und Includes SHALL jede Diagnose den ursprünglichen Dateinamen mit dessen physischer Zeile und Spalte tragen.

Scenario: Position in der Diagnose

  • WHEN in Zeile 3 ein Typkonflikt auftritt
  • THEN nennt die Diagnose Zeile 3 und die Spalte des Ausdrucks

Scenario: Include-Diagnose

  • WHEN ein eingebundenes Include einen Typfehler enthält
  • THEN nennt die Diagnose die Include-Datei und ihre eigene Quellposition

Requirement: Objektzugriffe in Grammatik und Semantik

Der Parser SHALL Punktpfade auf Formulare und Steuerelemente (objekt.eigenschaft), den Container-Operator form!steuerelement[.eigenschaft], IF TYPEOF ausdruck IS klasse, den Metabefehl $FORM und die Datentypen FORM und CONTROL als Parametertypen erkennen. Die Semantik SHALL Eigenschaften gegen die Klasse des Objekts prüfen und ihren Typ bestimmen. Ein Punktpfad, dessen Basis weder ein benutzerdefinierter Typ noch ein bekanntes Objekt ist, MUST eine Diagnose erzeugen, die Basis und Eigenschaft namentlich nennt; er MUST NOT zu einer impliziten Variablen mit Punkt im Namen werden.

Gleichnamige Steuerelemente unterschiedlicher Formulare SHALL im jeweiligen Formularnamensraum aufgelöst werden; die explizite Containerangabe SHALL vor der lokalen Namenssuche wirken.

Scenario: Unbekanntes Objekt wird benannt

  • WHEN ein Modul Text9.Text = "a" ohne Steuerelement Text9 enthält
  • THEN nennt die Diagnose Text9 als unbekanntes Objekt statt „Type mismatch" zu melden

Scenario: Unbekannte Eigenschaft wird benannt

  • WHEN ein Modul Text1.Farbe = 3 enthält
  • THEN nennt die Diagnose Farbe als unbekannte Eigenschaft von TextBox

Scenario: Eigenschaftstyp wird geprüft

  • WHEN ein Modul Text1.Text = 5 enthält
  • THEN meldet die Semantik einen Typkonflikt mit Nennung der Eigenschaft

Scenario: TYPEOF

  • WHEN ein Modul IF TYPEOF Ziel IS CommandButton THEN enthält
  • THEN wird es übersetzt und die Klasse gegen die bekannten Steuerelementklassen geprüft

Scenario: Gleichnamige Controls verschiedener Formulare

  • WHEN Form1 und Form2 jeweils Text1 enthalten und Form2!Text1.Text gelesen wird
  • THEN wird Text1 in Form2 aufgelöst und das Programm übersetzt diagnosefrei