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