/*****************************************************************************/ /* Syntax der Konvertierungsdatei */ /*****************************************************************************/ /* [ ] : optional */ /* { } : beliebig wiederholt */ /* | : alternativ */ /* < > : Konstante */ /* */ /* program : */ /* { statement } "END" */ /* */ /* statement : */ /* "REPLACE" "BY" { "," "BY" } ";" */ /* "DELETE" { "," } ";" */ /* "DELETE" "UNKNOWN" "REFERENCE" ";" */ /* "ADD" "," "," ";" */ /* "ADD" "MAKRO" "," "," */ /* [ "," "," ] */ /* "SET" "DEFAULT" "," ";" */ /* "SET" "MEANING" "," ";" */ /* "IF" (expression) { statement } */ /* { "ELSE_IF" (expression) { statement } } */ /* [ "ELSE" { statement } ] */ /* "ENDIF" */ /* "SYMBOL" "IGNORE" */ /* "COMPRESS" */ /* "FREEZE" */ /* ";" */ /* / * kommentar * / */ /* */ /* expression : */ /* term { "OR" | "||" term } */ /* */ /* term : */ /* factor { "AND" | "&&" factor } */ /* */ /* factor : */ /* ( expression ) */ /* "NOT" | "!" factor */ /* "EXIST" "(" ")" */ /* "NEWER" "(" ")" */ /* "CONVERT" "SYMBOLS" | "SHEETS" */ /* comparison */ /* */ /* comparison : */ /* "==" | "!=" | "<>" */ /* "==" | "!=" | "<>" */ /* */ /* string : */ /* "SYMBOLNAME" | "SYMBOLKOMMENTAR" | "SYMBOLDATUM" | */ /* "SYMBOLKLASSE1" | "SYMBOLKLASSE2" | */ /* | | */ /* */ /* bedeutung : */ /* "MEANING" "(" ")" */ /* */ /* codeinhalt : */ /* "VALUE" "(" ")" */ /* */ /* ganzzahl : */ /* "SYMBOLTYP" | */ /* */ /* codenr : Zahlenkonstante von 0..32767 */ /* symboltyp : Zahlenkonstante von 1..1000 */ /* */ /* bedeutung : Stringkonstante mit 0..20 Zeichen */ /* vorbelegung : Stringkonstante mit 0..80 Zeichen */ /* symbolname : Stringkonstante mit 1..16 Zeichen */ /* symbolklasse1 : Stringkonstante mit 0..32 Zeichen */ /* symbolklasse2 : Stringkonstante mit 0..32 Zeichen */ /* datum : Stringkonstante dd.mm.yy oder dd.mm.yyyy */ /* */ /*****************************************************************************/ /* beispiele */ /*****************************************************************************/ /* if ((symboltyp == 1) or (symbolname == "X*")) */ /* replace 123 by 4, 125 by 19; */ /* else_if (symbolname != "SF_DIN") */ /* delete 1009 */ /* else */ /* add 999,"Neuer Dialog","" */ /* endif */ /* end */ /*---------------------------------------------------------------------------*/ /* NUMERIC_SYMBOLTYP */ /* NUMERIC_CONSTANT 1 */ /* NUMERIC_EQ */ /* STRING_SYMBOLNAME */ /* STRING_CONSTANT "X*" */ /* STRING_EQ */ /* LOGICAL_OR */ /* JUMP_ON_FALSE L1 */ /* CODENR_REPLACE 2 123 4 125 19 */ /* JUMP L3 */ /* L1 STRING_SYMBOLNAME */ /* STRING_CONSTANT "SF_DIN" */ /* STRING_NE */ /* JUMP_ON_FALSE L2 */ /* CODENR_DELETE 1009 */ /* JUMP L3 */ /* L2 CODENR_ADD 999 "Neuer Dialog" "" */ /* JUMP L3 */ /* L3 SCRIPT_END */ /*****************************************************************************/ /* Beschreibung der Einzelkommandos */ /*****************************************************************************/ /* Alle Einzelkommandos werden durch Semikolon abgeschlossen. */ /* */ /* Das Script endet mit END */ /* */ /* Kommentare stehen in / * ... * / und sind verschachtelbar. */ /* */ /* Einzige Kontrollstruktur ist die IF-Anweisung : (S/P) */ /* */ /* IF (...) */ /* ... */ /* ELSE_IF(...) */ /* ... */ /* ELSE */ /* ... */ /* ENDIF */ /* */ /* ELSE_IF und ELSE sind optional. */ /* */ /* In der Bedingung fuer IF bzw. ELSE_IF stehen logische Ausdruecke. */ /* logische Ausdruecke sind : */ /* */ /* - Vergleich zweier Strings (==,!=) */ /* */ /* - Vergleich des Symbolnamens mit einem String */ /* - Vergleich des Symbolkommentars mit einem String */ /* - Vergleich der Symbolklasse1 mit einem String */ /* - Vergleich der Symbolklasse2 mit einem String */ /* - Vergleich des Symboldatums mit einem String */ /* */ /* IF (SYMBOLNAME == "SF_DIN") ... (S/P) */ /* IF (SYMBOLKOMMENTAR == "") ... (S) */ /* IF (SYMBOLKLASSE1 == "Klemme") ... (S) */ /* IF (SYMBOLDATUM == "01.01.1995") ... (S) */ /* */ /* - Vergleich der Bedeutung einer Codenummer mit einem String */ /* */ /* IF (MEANING(1006) == "BMK") ... (S) */ /* */ /* - Vergleich des Inhalts einer Codenummer mit einem String */ /* */ /* IF (VALUE(1006) == "?") ... (S/P) */ /* */ /* - Vergleich zweier Zahlen (==,!=) */ /* */ /* - Vergleich des Symboltyps mit ein Zahl */ /* */ /* IF (SYMBOLTYP != 7) ... (S/P) */ /* */ /* - Test ob Codenummer vorhanden ist */ /* */ /* IF (EXIST(1006)) ... (S/P) */ /* */ /* - Vergleich des Symbolerstellungsdatum mit einem Referenzdatum */ /* */ /* IF (NEWER("1.1.95")) ... (S) */ /* */ /* - Abfrage ob Symbole oder Zeichnungen konvertiert werden */ /* */ /* IF (CONVERT SYMBOLS) (S/P) */ /* IF (CONVERT SHEETS) (S/P) */ /* */ /* Alle logischen Ausdruecke lassen sich logisch verknuepfen mit */ /* OR, AND und NOT. AND ist hierbei hoeherwertiger als OR. */ /* */ /* IF ((SYMBOLTYP == 7) OR NOT EXIST(1006)) ... (S/P) */ /* */ /* Alle logischen Ausdruecke koennen beliebig geklammert werden. */ /* */ /* Ersetzen von Codenummern : */ /* */ /* REPLACE 105 BY 17, 99 BY 16, 407 by 4711; (S/P) */ /* */ /* Loeschen von Codenummern : */ /* */ /* DELETE 99, 102, 999; (S/P) */ /* */ /* Loeschen von Dialogen mit unbekannten Referenzen : */ /* */ /* DELETE UNKNOWN REFERENCE; (S) */ /* */ /* Zufuegen von Dialogen : */ /* */ /* ADD 1009, "Bedeutung", "Vorbelegung" (S) */ /* */ /* Zufuegen von Makros : */ /* */ /* ADD MAKRO 90, "Bedeutung", "Vorbelegung", 0.0, 0.0 (S) */ /* */ /* Aendern der Bedeutung : */ /* */ /* SET MEANING 1009, "Neue Bedeutung" (S) */ /* */ /* Aendern der Vorbelegung : */ /* */ /* SET DEFAULT 1009, "Neue Vorbelegung" (S/P) */ /* */ /* Ueberspringen des Symbols */ /* */ /* SYMBOL IGNORE (S) */ /* */ /* Zusammenschieben der Dialoge */ /* */ /* COMPRESS (S) */ /* */ /* Einfrieren aller Texte */ /* */ /* FREEZE (P) */ /* */ /*****************************************************************************/