3.1.2 Grammatik

Der IMS-Compiler besitzt eine relativ einfache Grammatik. Mit Hilfe dieser Grammatik werden die Nachrichten für ein Programm definiert. Eine ASCII-Datei in diesem Format, die Nachrichtendefinitionsdatei, dient dem IMS-Compiler als Quelldatei.

3.1.2.1 Grammatik in EBNF-Notation

Typographie:
Satzsymbol, Terminalsymbol, Terminalklasse, Non-Terminalsymbol, 'Schlüsselwort'

IMDF = 'IMDF' String 'Version' number 'AppType' appType '.' Block '.'.
Block = 'Begin' StatSeq 'End'.
StatSeq = Message { Message }.
Message = 'Message' number 'Detail' number ['Class' MessageClass] 
          ['Response' ResponseType { '+' ResponseType }]  
          ['C_ID' String] MessageDefinition { MessageDefinition }.
MessageDefinition = [LanguageName '.'] MessageType String
String = '"' { character } '"'.

Kommentare müssen zwischen geschwungenen Klammern stehen (verschachtelte Kommentare sind erlaubt).

3.1.2.2 Beschreibung

Jede Datei beginnt mit dem Schlüsselwort 'IMDF' und einer folgenden Zeichenkette, die einen Namen für dieses Skript angibt. Es folgt das Schlüsselwort 'Version' mit der Versionsnummer. Version 1.01 würde durch die Nummer '101' dargestellt. Der folgende Anwendungstyp (nach dem Schlüsselwort 'AppType') ist ein eindeutiger Code für die Anwendung. Dieser Code kann mit dem im SDK enthaltenen Tool 'imgenapptype.exe' erzeugt werden. Diese Anweisungen werden mit einem Punkt abgeschlossen.

Zwischen den Schlüsselwörtern 'Begin' und 'End' (gefolgt von einem abschließendem Punkt) befinden sich sämtliche Nachrichtendefinitionen. Jede Nachricht beginnt mit dem Schlüsselwort 'Message'. Diesem Schlüsselwort folgt eine Nummer für diese Nachricht. Es dürfen keine zwei Nachrichten mit derselben Nummer und Detailierungsgrad existieren. Der Schlüsselwort 'Detail' erwartet eine Nummer, die den Detailierungsgrad dieser Definition angibt. Der Wert 0 bezeichnet den niedrigsten Detailierungsgrad. Für jede Nachricht muß, zumindest für diesen Grad, ein Text und eine Überschrift definiert sein.

Ist das Schlüsselwort 'Class' angegeben, folgt einer der Nachrichtenklassen-Bezeichner. Wird dieses Schlüsselwort nicht verwendet, erhält die Nachricht automatisch die Klasse 'ERROR'.

Über das Schlüsselwort 'Response' kann eine Antwort für eine Nachricht verlangt werden. Es folgt eine, durch '+'-Zeichen getrennte, Aufzählung der möglichen Antworten. Falls ein Weiterleitungsmodul diese Fähigkeit besitzt, erhält das Programm die Antwort eines Benutzers (im synchronen Betrieb). Wird auf dieses Schlüsselwort verzichtet, benötigt diese Nachricht keine Antwort vom Benutzer.

Wird anschließend das Schlüsselwort 'C_ID' mit einem folgenden Bezeichner angegeben, generiert der Compiler eine zusätzliche Ausgabedatei. Diese Datei erhält den Namen des Skripts mit der Endung '.h'. In dieser Datei werden alle Definitionen ANSI-C kompatibel eingetragen. Damit kann diese Headerdatei in ein C-Programm eingebunden werden.

Jetzt folgen eine oder mehrere Mediendefinitionen für eine Nachricht. Zuerst wird die Sprache der Nachricht angegeben. Fehlt diese Angabe, wird die zuletzt verwendete Sprache benützt (falls noch gar keine Sprache verwendet wurde, dann ist Deutsch die Standardsprache). Der Nachrichtentyp beschreibt die Art der Nachricht (z.B. Text, Video, Audio,...). Der Inhalt des folgenden Strings hängt vom verwendeten Nachrichtentyp ab.

Unterstützte Sprachen

Der Compiler aktzeptiert folgende Sprachen:

GERMAN (oder 'G'), ENGLISH (oder 'E'), FRENCH (oder 'F'), BULGARIEN, JAPANESE, CHINESE, KOREAN, CROATIEN, CZECH, NORWEGIAN, DANISH, DUTCH, PORTUGUESE, ROMANIAN, FINNISH, RUSSIAN, SLOVAK, SLOVENIAN, GREEK, SPANISH, HUNGARIAN, SWEDISH, ICELANDIC, TURKISH, ITALIAN

Unterstützte Nachrichtentypen

Der Compiler aktzeptiert folgende Nachrichtentypen:

HEADING (der String enthält den Überschriftentext), TEXT (der String enthält den Text), HTML (der String enthält den Dateinamen der HTML-Datei), AUDIO_WAV (der String enthält den Dateinamen der WAV-Datei), VIDEO_AVI (der String enthält den Dateinamen der AVI-Datei), VIDEO_MPEG (der String enthält den Dateinamen der MPEG-Datei)

Unterstützte Nachrichtenklassen

Der Compiler akzeptiert folgende Nachrichtenklassen:

INFORMATION (oder 'I'), ERROR (oder 'E'), WARNING (oder 'W'), CRITICAL (oder 'C')

Unterstützte Antworten

Der Compiler akzeptiert folgende Antwortmöglichkeiten:

OK, CANCEL, HELP, YES, NO, RETRY, IGNORE, ABORT