D. Syntax der iG/Script Sprache

Nachfolgend ist die Syntax von iG/Script in Backus Naur Form angegeben. Die Metazeichen haben folgende Bedeutung:

<s>Schlüsselwort s
[a]a ist optional
{a}+a kann 1 - N-mal wiederholt werden
{a}*a kann 0 - N-mal wiederholt werden
a|ba oder b

iG/Script Syntax:

<Trennzeichen> := Newline, Return, Space oder Tabulator
<Kommentar>    := ! gefolgt von beliebiger Zeichenfolge bis Zeilenende
<Zeichenkette> := beliebige Zeichenfolge ohne <Trennzeichen>

<iG/Script-Programm> := {<Deklarationen>}*
                         <Ausdruck>

<Deklarationen> := <Mapdeklaration>
                := <Prozedurdeklaration>

<Mapdeklaration> := MAP <Mapname>
                       {<Komponentenname> => <Komponentenwert>}*
                    END_MAP

<Prozdurdeklaration> := PROCEDURE <Prozedurname>
                           <Ausdruck>
                        END_PROCEDURE

<Ausdruck> := <Konstante>
           := <Methodenaufruf>
           := <Prozeduraufruf>
           := <Objekt>
           := <Referenz>
           := <Zuweisung>
           := <Abbildung>
           := <Bedingung>
           := <Displayausdruck>
           := <WHILE-Ausdruck>
           := <Breakanweisung>
           := <Continueanweisung>
           := <Returnanweisung>

           := <IF-Ausdruck>
           := {<Ausdruck>}+

Konstante := ganze Zahl (z.B. 0)
          := reelle Zahl (z.B. 1.0)
          := String
          := TRUE
          := FALSE

String   := '<Zeichenkette>'

Methodenaufruf := <Klasse>.<Methodenname>

Prozeduraufruf := <Prozedurname>

Returnanweisung := RETURN

<Objekt>     := [ROOT.]<Komponente>
<Komponente> := <Name> | <Komponente> . <Name>
<Name>       := <Zeichenkette>

Zuweisung := => <Objekt>
             -> <Objekt>

Abbildung := <Mapname>

Bedingung := <Ausdruck> = <Basistyp>
          := <Ausdruck> <> <Basistyp>
          := <Ausdruck> > <Basistyp>
          := <Ausdruck> < <Basistyp>
          := <boolscher Ausdruck>

Displayausdruck := DISPLAY <Displayliste>
                := ERROR <Displayliste>
                := STATUS <Displayliste>

<Displayliste> := {<Mapname>|<Objekt>|<String>|$}
                  {,<Mapname>|<Objekt>|<String>|$}*

WHILE-Ausdruck := WHILE <Bedingung> DO
                     <Ausdruck>
                  END_WHILE

Breakanweisung := BREAK

Continueanweisung := CONTINUE

IF-Ausdruck := IF <Bedingung> THEN
               {ELSIF <Bedingung> THEN <Ausdruck>}*
               [ELSE  <Bedingung> THEN <Ausdruck>]
               END_IF