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|b | a 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