-
Notifications
You must be signed in to change notification settings - Fork 0
/
Template.xpt
126 lines (78 loc) · 1.77 KB
/
Template.xpt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
«IMPORT metamodel»
«DEFINE main FOR Automate»
«FILE this.name+".ta"»
//Global declaration
clock «EXPAND clock2text FOREACH clocks SEPARATOR ',' »;
chan «EXPAND chan2text FOREACH transitions SEPARATOR ',' »;
process «this.name» {
// recupere tous les états
state «EXPAND state2text FOREACH states SEPARATOR ','»;
// recupère l'état initial
«EXPAND intialState2text FOREACH states»
trans «EXPAND transition2text FOREACH transitions SEPARATOR ','»
;
}
process sensor{
state start, bar1, bar2, end;
init start ;
trans
start -> bar1
{
sync r!;},
start -> bar2{sync b1!;},
bar1 -> bar2
{sync b1?;},
bar2 -> end
{sync b2?;},
end -> start
{
sync exit?;
};
}
system ctr,sensor;
system «this.name», user;
«ENDFILE»
«ENDDEFINE»
«REM» traitement des horloges «ENDREM»
«DEFINE clock2text FOR Clock»
«this.name»
«ENDDEFINE»
«REM» traitement de l'état initial «ENDREM»
«DEFINE intialState2text FOR State»
«IF this.isInitial==true»
init «this.name»;
«ENDIF»
«ENDDEFINE»
«REM» traitement cannal de communication «ENDREM»
«DEFINE chan2text FOR Transition »
«REM» recupère uniquement le premier caractère«ENDREM»
«this.action.subString(0,1).toLowerCase()»
«ENDDEFINE»
«REM» traitement des états «ENDREM»
«DEFINE state2text FOR State»
«IF this.Invariant=='null'»
«this.name»
«ELSE»
«this.name» {«this.Invariant»}
«ENDIF»
«ENDDEFINE»
«REM» traitement des trantitions «ENDREM»
«DEFINE transition2text FOR Transition»
«this.source.name» -> «this.target.name» {
«REM» guard «ENDREM»
«IF this.guard !='null'»
guard «this.guard» ;
«ELSE»
«ENDIF»
«REM» action «ENDREM»
«IF this.action !='null'»
sync «this.action»;
«ELSE»
«ENDIF»
«REM» mise à jour des horloges «ENDREM»
«IF this.reset !='null'»
assign «this.reset»
«ELSE»
«ENDIF»
}
«ENDDEFINE»