PL/I-unähnliche Konstrukte

Erkennen und Melden unähnlicher Konstrukte

PL/I ist eine flexible Sprache mit einem hohen Grad an Ambiguität. So können vorhandene Bugs unbemerkt bleiben, weil der Compiler die Eingabe in einer Weise zulässt, die sich vollständig von der eigentlichen Absicht des Entwicklers unterscheidet.

Ein Stück Code wie:
DCL AA FIXED BIN(15), INIT(7);PL/I unlikely constructs Raincode

deklariert eine Variable namens INIT als ein Array aus 7 Elementen, während der Entwickler eigentlich die Absicht hatte, “7” eindeutig als Initialwert der Variable AA zu definieren. Aufgrund des – irrtümlicherweise – vor INIT platzierten Kommas versteht der Compiler dies als eine separate Variablendeklaration.

Derartige unähnliche Konstrukte, sowie zahlreiche andere, werden vom Raincode PL/I Compiler erkannt und korrekt gemeldet:

  1. Implizite Variablendeklarationen
  2. Initialisierungsklauseln mit mehr Werten als aufzufüllenden Elementen
  3. Fehlende END-Schlüsselwörter in geschachtelten Anweisungen
  4. INIT-Klauseln in basierten Variablen (die ignoriert werden)
    Implizite Typkonvertierungen (Promotions) von Bitstrings zu Gleitkommawerten, die mögliche Präzisionsunterschiede verursachen
    usw.
    Jede dieser Warnungen lässt sich auch deaktivieren, um die Compiler-Ausgabe nicht zu überlasten, oder als Fehler deklarieren, um sicherzugehen, dass kein Programm kompiliert wird, solange

Sign in
classic
Forgot password?
×
Sign up

(*) Required fields

I agree with Raincode Terms & Privacy Policy

×
CONTACT US