Files

2.7 KiB

ADDED Requirements

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.

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

Requirement: Bang-Operator neben dem SINGLE-Suffix

Der Lexer SHALL ! als Container-Operator erkennen, wenn ihm ein Bezeichner folgt, und andernfalls als Typsuffix für SINGLE. Beide Formen MUST im selben Modul nebeneinander verwendbar sein.

Scenario: Beide Bedeutungen im selben Modul

  • WHEN ein Modul Wert! = 1.5 und Form1!Text1.Text = "a" enthält
  • THEN wird die erste Zeile als SINGLE-Variable und die zweite als Containerzugriff übersetzt

Requirement: Ereignisprozeduren mit festen Signaturen

Die Semantik SHALL eine SUB, deren Name der Form Objekt_Ereignis entspricht und deren Objekt bekannt ist, als Ereignisprozedur erkennen und ihre Parameterliste gegen die Signatur der Forms-Referenz prüfen. Eine abweichende Parameterliste MUST namentlich gemeldet werden. Eine SUB mit Unterstrich im Namen ohne bekanntes Objekt MUST weiterhin eine gewöhnliche Prozedur sein.

Scenario: Falsche Signatur

  • WHEN ein Modul SUB Form_MouseDown (X AS SINGLE) enthält
  • THEN nennt die Diagnose die erwartete Parameterliste der Ereignisprozedur

Scenario: Gewöhnliche SUB mit Unterstrich

  • WHEN ein Modul SUB Zins_Berechnen (n AS INTEGER) ohne Objekt Zins enthält
  • THEN wird sie als gewöhnliche Prozedur übersetzt