Specifying visual Languages with GenGED

 !"# $
!" !" !" % &'
( !" ) * & ' ! "
! # $
! !# % $ & '()* ! $
# +
" , "! , $ ! #
" "
-! ,
. ! ! /012 ,
'(*# ! ! " " # " !$
"
/
01 3
2# " ,
/!$,
,2 # 4
! ! -$"! "# ! !$,
#
5!$ ,
" ! !# !6 "
"! 01 ## 4
! "! 01 3
&# 7 "
! "
! ,
# & $ " #
$ & # "! 01 #
8 9 5# : "
-! "! # $ 5# ; !$,
# 5# < & ,
#
" , "
,
# =
"! " "
!$ / 2 !$ /
!2# "! > !
$ $ # $
! / 01 " "
! 012
# !$ $
"
!$ "! ! !" ! "! "
!$# " /532 8 " 4
,
!" "! "# 53 " "! " " "# 53 ! 01#
. !$,
" 01, "! ! # 01 !$ # "! 01 $#
01 " " ! ! /
2 /2
01 ## "
! 01# 01 " ,
"! "
" '(*#
" " ?# (# "
!$ " ! !"
/
2 /
# 2 & #
!" " !
/
2 " /
2# ! !" /# 5# ;#;2# & "
!$ ?# (#
Abstract
Syntax
Active
a
String
In
Concrete
Syntax
String
Start
SN
s
beg
end Trans
TL
f
Final
State
String
Helv.,12pt
String
String
Helv.,12pt
!" $ " !" & "# ?# ( ## !" !
"! # !" / !2
"! # 8 /
"! ?# (2# "
! $ ! "! " #
?# : "
!$ " ,& @
!#
!9 " "! "4
# "4
# / 2 "
/9 9 9 9 9 2#
A 01 " 01 01 " # .! !
! , /1+5 2 , / +5 2 " /
"
!$ 2# %
!
" $ "! /B2 " " $
" #
A
," # 5,3 /53C2 '((* TN
1:Trans
Syntax
SN
SN
Start
SN
2:Trans
TN
Abstract
TN
3:Trans
TN
3:State
SN
2:State
1:State
4:State
TN
4:Trans
SN
5:State
Final
5:Trans
d
Concrete
Buffer
r
Hungry
Consumer
Busy
Producer
Syntax
c
p
o
Idle
Producer
Satisfied
Consumer
) +
,-
&
,& =",3 /=3C2
'D* ½ # / 2 / 2 "
!$ 6 1+5 "
!$ # = " "# 8 "> "! /# 'E*2#
Insert_State (sn: String)
NAC
x:State
x’:SN
sn
L
x:State
x’:SN
sn
R
::=
sn
sn
.&'
&
?# ; !$ # ! "! " ! # , ! ## ½
( .+/ & 0+/ ! # ! , !" # B " #
"
" 01 01, # 01 01 " & ! F # ?# <#
0-1
Syntax Grammar
Alphabet
Parse Grammar
Parse Specification
Simulation Grammar
0-1
VL-Specification
*
1
2 !" ! !$ 01 "
! $
!$ 01# %
! ,
" ! ,
!$,
# .
!
" ! ¾ ! " ,
" ! # ,
!$,
" 01, ,
# " "# $ 01 /& 5
':*2 " !$ # ! " $,
"! !
! 8 # $ # 5
!$ !$ "! #
!$ # 6
" # .! " ! # !$ ¾
1 & !"
!" #
#
?# G F & !# ?# G !$ $ H ! ?# ;#
" " & ! "! !"# B !" # B " " #
Insert_Transition (tn: String)
L
sn’
y’:SN
beg z:Trans endz’:TL
sn’
y:State x:State
x’:SN
sn
::=
y’:SN
y:State
R
sn
x’:SN
sn
sn’
sn’
Mark_Start ()
L
x:State
x:State
tl
x’:SN
sn
y:Start
x:State
x’:SN
sn
tn
sn
R
::=
sn
sn
Mark_Final ()
NAC
sn
y:Final
x’:SN
x:State
sn
L
x:State
x’:SN
sn
y:Final
x’:SN
R
x:State
::=
sn
sn
sn
.&' . 6 # $ ># !
"
/ !
2 # ! ,
# ! 8 # .! " / !
2 " #
!8 # !
! /
"
!2 " &#
$ / ?# D2 !
# ! " & $! # " !$ / ! B 2# ! Remove_Transition ()
L
beg z:Trans endz’:TN
sn’
y’:SN
y:State
x:State
tn
sn’
tn
sn
::=
sn’
sn
y:State x:State
sn’
x’:SN
x’:SN
sn
R
sn
sn
Unmark_Final ()
L
y:Final
y’:SN
x’:SN
x:State
x’:SN
sn
R
::=
x:State
sn
sn
Remove_State ()
L
x:State
x’:SN
Stop
R
sn
y:Start
x:State
x’:SN
sn
::=
sn
sn
+
"! !"# ! !" " !" !"# > "! 6 #
8 " /?# (2
!" # ,
# &
# !" " " # 5 $ " # ?# I #
! #
!" # " !"# !" # " " $ # $ " #
A " ! $! "#
Init (in: String)
L
y:Start
x:State
x’:SN
a:Active
i:In
in
x:State
x’:SN
sn
R
sn
::=
y:Start
sn
sn
Trigger_Transition ()
L
i:In
in
a:Active beg z:Trans
sn’
y’:SN
x:State
y:State
sn’
tl
sn’
::=
z’:TL
y’:SN
beg
sn
attr. cond.:
in.startsWith(tn)
x’:SN
a’:Active
z:Trans end
x:State
tl
tl
sn
tl
y:State
sn’
z’:TL
end
x’:SN
R
i’:In
in.substring(tn.length())
sn
sn
. 01 " 01 /## ,
2# "
01 ! /& ##
3
5
2# / 2 #
+
8 "! 01
## 5
# ! "
! ,$
,
" ! #
! "
!
,$
" ! # "
" ! ! # 5 ! ! !#
?# J 2 @
?#
:# # ?
&# 3
8 "& &¿# ?# J "2 ! "4
#
a)
d
Buffer
Hungry
Consumer
Busy
Producer
p
b)
r
c
o
Idle
Producer
Satisfied
Consumer
) ) ! . +
,-
.&
& ,
8 ! " 01 01 /01
4
!2 01 # ! ! # B
! ,
8 " 01 " $ "! , !# !# "! "
"! ! 1+5 +5 #
Simulation Rule Instance
d
BP
B
deliver
d
BP
B
View Transformation
Animation Rule
deliver
! . ) !
¿
% ) 3
?# E /
2 ! "! # ?# E !# " " #
&
& 'I*#
! '(* /012
!$,
# % " $ 4
"# B !
!$,
! " ! " # " "
! ! 8 "
01 #
,
/ 2# > & !
3
'G*# %
" ';I* 4
! 3
/## ! 3@
"
+,1 2 " 01 #
?
4
! "
'<*# 'J(:* "
4
01 !
"
/
,
2 $ # 01 /"
2 # ! "
01 ! " 4
&
#
! "! A
,
/=?A2 > 331A 3+ /53 ,
A2 A 3+ /B3 =1 2 > > K=?A,
?
L# %! & !,
" #
4 5 !
0
6 7888 +0 &
0 -
. 4999
7 5 - :
! . +
.
!
(
.
(& .
;<= 7884
!
"#$%
> 5 - :
* :
?
0
.&' ) ! @ ??:0 5
A 7884,49 (..A
4B>C994; 7884
B 5 - :
" 5
) @
)
) .
@ (
D
+ E /
7888
; E 6 :
6 *F D +
@ GH ) ?
)
+
A ( *D 6
7887 C * :
5 * @ 6
F @ " " 5
) 1
) -
)
)
?
((% . + )
-
0 + )
( ? 5E
$&
'
( )
*
+##+, -./ 0
1 2
/1
3 4 $, 2
B 7B=<>47 1
. 499=
= - :
5 * :
. ( )
! +
A ( 1
I4>J =;<97
K - :
5 D +
! 0 .
)
: ?
(
- 0
1 5
6 !57-."#$%4 *73
&&4 7 &4 +##$
9 + ?
+0 & +
?
& $
& 499C
48 / 6 @ @ ?
0
:
+
$
* :
.&'0
: ( * :
? E
8
9 3
.."+###
2
:
-./
*.
0
1
>7<>9 @
7;7= 7888
44 @ " @ 6
F ) 1
) )
$
)
?
( @ . @ +L
@ :
4B 4K;<499
D 1& M . " 499>
47 D +
- :
5 5 ! @ :
(
BC=<B=; ? .E
7888 -
. -
4> * 1
* :
1 5 ?
& .
7884 5
?
+
A & $
? (.. .)
, 0
1 +; - 3
4
4 !-3"+###%
+ - 3
3 ' 6 7