A Abstrakte Syntax
Folgende erweiterte BNF-Notation faßt die abstrakte Syntax
als gemeinsame Zwischenrepresentierung zusammen. Abgesehen von einigen
Namenkonventionen (Großschreibung) ist die Umsetzung in Java trivial.
Jeder nichtterminale Eintrag wird ein Klasse. Alternativen,
gekennzeichnet durch |, sind Unterklassen der abstrakten
Klasse, deren Unterfälle sie bilden. Die Einträge der mittleren Spalte
werden als Felder der Klassen repräsentiert. Die Konstruktoren sind,
bis auf die Reihenfolge der Argumente, durch die Felder der Klasse
festgelegt.1
SFC ::= istep : step
steps : step list
transs : transition list
actions : action list
step ::= a_name : string
actions : action list
action ::= qualifier : action_qualifier
sap : stmt list (* simple assignment program *)
stmt ::= skip
| assign
assign ::= var : variable
val : expr
variable ::= name : string
type : type
action_qualifier ::= Nqual (* may be extended *)
transition ::= source : step list
guard : expr
target : step list
expr ::= b_expr
| u_expr
| constval
| variable
b_expr ::= left_expr : expr
right_expr : expr
op : operand
type : type
u_expr ::= sub_expr : expr
op : operand
type : type
operand ::= PLUS | MINUS | TIMES | DIV (* Operand als *)
| AND | OR | NEG (* Konstanten in expr *)
| LESS | GREATER | LEQ | GEQ | EQ
type ::= inttype
| booltype
last generated May 2, 2001 (©Public License)