next up previous contents index
Next: 2.4 Die Struktur einer Up: 2.3 Dateien, Extensionen, Formate Previous: 2.3.3 Eingabe von Netzen

Unterabschnitte

2.3.4 Dateiformate

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.

Syntax der .pnt-Datei

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>

Beispiel für eine .pnt-Datei

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
@

Syntax der .cnt-Datei

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 [*]).

Beispiel für eine .cnt-Datei

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 
@


Hinweis

In Netzdateien können Sie beliebige Kommentare nach dem letzten @ einfügen. Diese Kommentare werden nicht eingelesen, folglich auch nicht bei einer Speicherung in eine andere Datei beibehalten.


next up previous contents index
Next: 2.4 Die Struktur einer Up: 2.3 Dateien, Extensionen, Formate Previous: 2.3.3 Eingabe von Netzen

© 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