Files

2.5 KiB
Raw Blame History

ADDED Requirements

Requirement: Ereignis-Traps in Grammatik und Signaturprüfung

Der Parser SHALL die Trap-Anweisungen des Vorbilds als eigene Konstrukte erkennen: ON TIMER(n) GOSUB ziel, ON KEY(n) GOSUB ziel, ON UEVENT GOSUB ziel und ON SIGNAL(n) GOSUB ziel. Diese Formen MUST NOT als berechnetes ON ausdruck GOSUB liste behandelt werden. Die Steueranweisungen TIMER, KEY(n), UEVENT und SIGNAL(n) mit ON, OFF oder STOP SHALL erkannt und nur für diese Quellen zugelassen werden; EVENT SHALL nur ON und OFF zulassen, weil das Vorbild keinen dritten Zustand kennt. COM, PEN, PLAY und STRIG MUST als Non-Feature namentlich abgewiesen werden. SetUEvent SHALL eine Signatur besitzen. Die Wertebereiche SHALL geprüft werden: ON KEY(n%) mit n% aus 0, 125 oder 3031, ON TIMER(n&) mit n& aus 186 400 und ON SIGNAL(n%) mit n% aus 12. Eine fehlerhafte Verwendung MUST eine Diagnose erzeugen, die das Element namentlich nennt.

Scenario: ON TIMER ist kein berechnetes GOSUB

  • WHEN ein Modul ON TIMER(5) GOSUB Marke enthält
  • THEN wird die Anweisung als Zeit-Trap erfasst und nicht als ON ausdruck GOSUB mit einer einelementigen Zielliste

Scenario: Ungültige Kennung wird namentlich gemeldet

  • WHEN ein Modul ON KEY(99) GOSUB Marke enthält
  • THEN nennt die Diagnose ON KEY und den zulässigen Wertebereich

Scenario: EVENT kennt kein STOP

  • WHEN ein Modul EVENT STOP enthält
  • THEN nennt die Diagnose EVENT und die zulässigen Formen ON und OFF

Scenario: Zeitintervall außerhalb des Bereichs

  • WHEN ein Modul ON TIMER(90000) GOSUB Marke enthält
  • THEN nennt die Diagnose ON TIMER und den Bereich 1 bis 86400

Scenario: Non-Feature-Quelle wird abgewiesen

  • WHEN ein Modul ON PEN GOSUB Marke enthält
  • THEN meldet die Übersetzung „Feature unavailable" an der Fundstelle der Anweisung — wie bei jedem anderen Non-Feature — und nicht einen generischen Syntaxfehler

Scenario: SetUEvent besitzt eine Signatur

  • WHEN ein Modul CALL SetUEvent enthält
  • THEN entsteht keine Diagnose „Subprogram not defined"

Requirement: Trap-Ziele sind Sprungziele des Moduls

Das Ziel eines Ereignis-Traps SHALL wie ein GOSUB-Ziel aufgelöst werden. Ein unbekanntes Ziel MUST zur Übersetzungszeit gemeldet werden und nennt dabei das Label.

Scenario: Unbekanntes Trap-Ziel

  • WHEN ein Modul ON TIMER(1) GOSUB Fehlt ohne Label Fehlt enthält
  • THEN meldet die Übersetzung ein undefiniertes Sprungziel und nennt Fehlt