Previous Contents Next

B   Abstrakte Syntax

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
u_expr : sub_expr : expr
    op : operand
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
chandec ::= chan : channel
variable ::= name : string
channel ::= name : string
constval ::= val : Object
position ::= x : float
    y : float

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