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 SteuerelementText9enthält - THEN nennt die Diagnose
Text9als unbekanntes Objekt statt „Type mismatch" zu melden
Scenario: Unbekannte Eigenschaft wird benannt
- WHEN ein Modul
Text1.Farbe = 3enthält - THEN nennt die Diagnose
Farbeals unbekannte Eigenschaft vonTextBox
Scenario: Eigenschaftstyp wird geprüft
- WHEN ein Modul
Text1.Text = 5enthält - THEN meldet die Semantik einen Typkonflikt mit Nennung der Eigenschaft
Scenario: TYPEOF
- WHEN ein Modul
IF TYPEOF Ziel IS CommandButton THENenthä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.5undForm1!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 ObjektZinsenthält - THEN wird sie als gewöhnliche Prozedur übersetzt