Previous Contents Next

B   Abstrakte Syntax

Folgende erweiterte BNF-Notation faßt die abstrakte Syntax als gemeinsame Zwischenrepresentierung zusammen. Abgesehen von einigen Namenkonventionen (Großschreibgung) ist die Umsetzung in Java trivial. Jeder nichtterminale Eintrag wird ein Klasse. Alternativen, gekennzeichnet durch |, sind Unterklassen derabstrakten Klasse, deren Unterfälle sie bilden. Die Einträge der mittlere Spalte wird als Felder der Klassen repräsentiert. Die Konstruktoren sind, bis auf die Reihenfolge der Argument, durch die Felder der Klasse festgelegt.


program ::= chans : chandec list
    procs : process list
process ::= vars : vardec list
    steps : transition list
    states : astate list
    init : initstate
transition ::= source : astate
    target : astate
    lab : label
label ::= guard : expr
    act : action
action ::=     tau
  |     input_action
  |     output_action
  |     assign_action
astate ::=     initstate
  |     state
state ::= name : string
    assert : expr
    pos : position
initstate ::= name : string
    assert : expr
    pos : position
expr ::=     b_expr
  |     u_expr
  |     constval
  |     variable
b_expr ::= left_expr : expr
    right_expr : expr
    op : operand
    type : m_atom_type
u_expr ::= sub_expr : expr
    op : operand
    type : m_atom_type
operand ::= PLUS |MINUS |TIMES |DIV   (Operand als Konstanten in expr)
  | AND |OR |NEG
  | LESS |GREATER |LEQ |GEQ
input_action ::= chan : channel
    var : variable
output_action ::= chan : channel
    val : expr
assign_action ::= var : variable
  | val : expr
vardec ::= var : variable
    val : constval
    type : m_atom_type
chandec ::= chan : channel
    type : m_chan
variable ::= name : string
    type : m_atom_type
channel ::= name : string
    type : m_chan
constval ::= val : Object
    type : m_atom_type
m_type ::=     m_atom_type
  |     m_chan
m_atom_type ::=     m_int
  |     m_bool
position ::= x : float
    y : float

Neu in Version 5

Neu is die Hinzunahme von Typen. Im Wesentlichen sind dies: Um nicht mit den Standardklassen von Java ins Gehege zu kommen, besitzen in der Implementierung die Namen der Klassen ein M_ für Mist als Präfix. Der Typ für Kanäle ist gedacht für die Deklaration von Kanälen, eine Chan Bool kann nur boolesche Werte übertragen, entsprechend für ganze Zahlen.

Es wurde weiterhin folgende Einschränkung vereinbart: Deklarationen sind grundsätzlich mit Angabe des Typs.

Betroffen von der Erweiterung sind die Ausdrücke, (expr und ihre Unterklassen) die nun typisiert sind. Daneben die Deklaration für Variablen und für Kanäle.

Bemerkung: Es wurde festgelegt, daß Deklarationen grundsätzlich typisiert sein sollen, um die Aufgabe der Modelchecker und der Simulatorgruppe zu vereinfachen.

Neu in Version 3

Neu sind die Positionen (momentan x- und y-Koordinate, die der graphischen Platzierung der Zustände dienen. Weiter hat sich die Syntax der Prozesse geändert: es werden Transitionen und Zustände gespeichert, wobei der initiale Zustand extra gespeichert ist. D.h., der initiale Zustand ist ebenfalls in der Liste aller Zustände enthalten.

©Public License
Previous Contents Next