Parameter und lokale Variablen dürfen in einer Vorausschau-Produktion nicht verwendet werden! |
Top Previous Next |
Meldungen > Parameter und lokale Variablen dürfen in einer Vorausschau-Produktion nicht verwendet werden!
Diese Fehlermeldung erscheint, wenn das Parsen mit einer Produktion durch semantischen Code gesteuert wird, der auf eine lokal deklarierte Variable oder einen Parameter zugreift, die Produktion aber zugleich direkt oder indirekt zur Vorausschau verwendet wird. Dies ist nicht zulässig, weil in Vorausschau-Produktionen zur Vermeidung von Seiteneffekten wie der Verdopplung einer Textausgabe, sämtlicher semantischer Code ignoriert wird, soweit er nicht unmittelbar zur Bedingung einer IF- oder WHILE-Struktur gehört.
Beispiel:
IF( Prod() ) ...
Die Produktion Prod wird in einer IF-Struktur als Vorausschau-Produktion eingesetzt. Sie enthält aber eine WHILE-Struktur, deren Auswertung auf die lokal deklarierte Variablen b zugreift.
Prod ::= {{ bool b = true; }}
WHILE ( b ) ... {{b = false;}} END
Die Verwendung von Klassenvariablen wird in derartigen Fällen geduldet, sie kann aber im generierten Code zu Verletzung von const-Bedingungen führen.
|
Diese Seite gehört zur TextTransformer Dokumentation |
Home Inhalt English |