In diesem Abschnitt finden Sie Dateiformatbeschreibungen in erweiterter
Backus-Nauer-Form (EBNF). Die Zeichen [ ]
stehen für eine Option,
{ }
für eine Wiederholung, |
für eine Alternative, " "
für eine Zeichenkette, < >
für eine syntaktische Einheit
und ::=
ist das Ersetzungszeichen. Einzige Besonderheit ist die
Zeichenkette "<cr>"
, die für ein Zeilenendezeichen steht.
Zeilenumbrüche in der Darstellung haben keine Bedeutung, sie dienen nur
der Übersichtlichkeit.
Die Beschreibungen dienen als eine Schnittstelle, die es Ihnen ermöglicht, beliebige (grafische) Editoren anzuschließen, sofern Sie die Formate so gut kennen, daß Sie ein Programm zur Transformation in das INA -Dateiformat schreiben können.
Die .pnt-Netzdatei besteht aus drei Abschnitten, die durch das @
-Zeichen
getrennt sind. Die Abschnitte enthalten Informationen über die Netzstruktur,
die Plätze bzw. die Transitionen. Namen bestehen in der Regel aus 16
Buchstaben, die gegebenenfalls mit Leerzeichen aufgefüllt werden. Erlaubt sind
auch einige Sonderzeichen wie z.B. "_"
. Die
maximale Größe von Zahlen ist rechnerabhängig.
<pnt-file> ::= <netheader> "<cr>"
<netstruct> "<cr>"
"@<cr>"
<placedata> "<cr>"
"@<cr>"
<transdata> "<cr>"
"@<cr>"
<netheader> ::= "P M PRE,POST NETZ " <netid>
<netid> ::= <netnr> [ ":" <netname> ]
<netnr> ::= <number>
<netname> ::= <name>
<netstruct> ::= <placedef>
{ "<cr>" <placedef> }
<placedef> ::= { " " <placenr> " " <tokens> " " [ <prelist> ] [ ", " <postlist> ]
<placenr> ::= <number>
<tokens> ::= <number>
<prelist> ::= { <transnr> [ ": " <arcmult> ] " " }
<postlist> ::= { <transnr> [ ": " <arcmult> ] " " }
<transnr> ::= <number>
<arcmult> ::= <number>
<placedata> ::= "place nr. name capacity time"
{ "<cr> " <placenr> ": " <placename> " " <capacity> <time> }
<placename> ::= <name>
<capacity> ::= " " <nr> | "oo"
<time> ::= <number>
<transdata> ::= "trans nr. name priority time"
{ "<cr> " <transnr> ": " <transname> " " <priority>
<time> }
<transname> ::= <name>
<priority> ::= <number>
Hier finden Sie die Datei des Netzes 2.1 ,,Drei Programmierer teilen sich zwei Terminals``:
P M PRE,POST NETZ 1:3_Prog_2_Term
0 2 4: 2 5 6, 1: 2 2 3
1 0 1, 4
2 0 2, 5
3 0 3, 6
4 1 4, 1
5 1 5, 2
6 1 6, 3
@
place nr. name capacity time
0: Terminal_frei oo 0
1: Prog1_am_Term oo 0
2: Prog2_am_Term oo 0
3: Prog3_am_Term oo 0
4: Prog1_in_Pause oo 0
5: Prog2_in_Pause oo 0
6: Prog3_in_Pause oo 0
@
trans nr. name priority time
1: login_Prog1 0 0
2: login_Prog2 0 0
3: login_Prog3 0 0
4: logout_Prog1 0 0
5: logout_Prog2 0 0
6: logout_Prog3 0 0
@
Die .cnt-Netzdatei besteht aus der entfalteten Netzstruktur, die die Platzfarben, deren Anfangsmarkierung und die Verbindungen mit den Transitionsfarben beschreibt und den Platz- bzw. Transitionsfarben. Bis zu diesem Punkt findet sich in der Syntax kein Unterschied zu einer .pnt-Datei. Es folgt jetzt in einem vierten Abschnitt die Faltungsinformation, d.h. die Information, welche gefärbten Plätze und Transitionen es gibt, und welche Farben diese haben.
<cnt-file> ::= <pnt-file>
<aggregat> "<cr>"
"@<cr>"
<aggregat> ::= "AGGREGATION:<cr>"
<placeaggr> "<cr>"
"@<cr>"
<transaggr>
<placeaggr> ::= "places:<cr>"
<placecol>
{ "<cr>" <placecol> }
<placecol> ::= " " <placenr>:<placename> " " <placenr> { " " <placenr> }
<transaggr> ::= "transitions:<cr>"
<transcol>
{ "<cr> <transcol> }
<transcol> ::= " " <transnr>:<transname> " " <transnr> { " " <transnr> }
Die dargestellte Syntax ermöglicht eine Kompatibilität der Netzdateien; es ist also möglich, .pnt-Dateien zu falten und .cnt-Dateien zu entfalten, d.h. die Faltungsinformation zu ignorieren (siehe dazu Kapitel 2.5.1 auf Seite ).
Hier finden Sie die Datei des gefärbten Netzes des Beispiels 2.2: ,,Fünf speisende Philosophen``
P M PRE,POST NETZ 2:Dinner
1 1 16 17, 2 6
2 1 17 18, 3 7
3 1 18 19, 4 8
4 1 19 20, 5 9
5 1 16 20, 1 10
6 0 1, 11
7 0 2, 12
8 0 3, 13
9 0 4, 14
10 0 5, 15
11 0 6, 11
12 0 7, 12
13 0 8, 13
14 0 9, 14
15 0 10, 15
16 0 11, 16
17 0 12, 17
18 0 13, 18
19 0 14, 19
20 0 15, 20
@
place nr. name capacity time
1: fork1 oo 0
2: fork2 oo 0
3: fork3 oo 0
4: fork4 oo 0
5: fork5 oo 0
6: phil1 oo 0
7: phil2 oo 0
8: phil3 oo 0
9: phil4 oo 0
10: phil5 oo 0
11: phil1 oo 0
12: phil2 oo 0
13: phil3 oo 0
14: phil4 oo 0
15: phil5 oo 0
16: phil1 oo 0
17: phil2 oo 0
18: phil3 oo 0
19: phil4 oo 0
20: phil5 oo 0
@
trans nr. name priority time
1: phil1 0 0
2: phil2 0 0
3: phil3 0 0
4: phil4 0 0
5: phil5 0 0
6: phil1 0 0
7: phil2 0 0
8: phil3 0 0
9: phil4 0 0
10: phil5 0 0
11: phil1 0 0
12: phil2 0 0
13: phil3 0 0
14: phil4 0 0
15: phil5 0 0
16: phil1 0 0
17: phil2 0 0
18: phil3 0 0
19: phil4 0 0
20: phil5 0 0
@
AGGREGATION:
places:
1:table 1 2 3 4 5
2:has_left 6 7 8 9 10
3:has_right 11 12 13 14 15
4:is_eating 16 17 18 19 20
@
transitions:
1:take_left 1 2 3 4 5
2:take_right 6 7 8 9 10
3:start_eat 11 12 13 14 15
4:put_back 16 17 18 19 20
@
@
einfügen. Diese Kommentare werden nicht eingelesen, folglich
auch nicht bei einer Speicherung in eine andere Datei beibehalten.
© 1996-98 Prof. Peter H. Starke (starke@informatik.hu-berlin.de) und Stephan Roch (roch@...)
INA Handbuch Version 2.1 zuletzt geändert: 1998-03-24