Wiki source code of Comparison of the textual description language
Version 21.1 by wah on 2012/11/01 21:03
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | |=((( | ||
2 | |||
3 | )))|=((( | ||
4 | KIELER SyncCharts | ||
5 | )))|=((( | ||
6 | YAKINDU SCT | ||
7 | )))|=((( | ||
8 | |||
9 | ))) | ||
10 | |(% colspan="1" %)(% colspan="1" %) | ||
11 | ((( | ||
12 | **Declarations** | ||
13 | )))|(% colspan="1" %)(% colspan="1" %) | ||
14 | ((( | ||
15 | **Pure Signals**: signals have a present status: | ||
16 | |||
17 | * absent or present | ||
18 | * must be set for input signals | ||
19 | * computed for local and output signals:\\ | ||
20 | ** for each tick absent by default unless signal is emitted | ||
21 | * Example:\\ | ||
22 | ** Emit signal S: S | ||
23 | ** Test for presence: S | ||
24 | |||
25 | **Valued Signals**: | ||
26 | |||
27 | * are pure signals than additionally are able to store a value | ||
28 | * values are persistent across ticks | ||
29 | * Example: | ||
30 | ** Emit signal V with value 3: V(3) | ||
31 | ** Test for presence: V | ||
32 | ** Get the last emitted value of V: ?V | ||
33 | \\ | ||
34 | |||
35 | (% style="color: rgb(0,0,0);" %)**Variables: ** | ||
36 | |||
37 | * (% style="color: rgb(0,0,0);" %)Are not(%%) shared between concurrent regions | ||
38 | * Currently implemented by host type variables | ||
39 | )))|(% colspan="1" %)(% colspan="1" %) | ||
40 | ((( | ||
41 | **Events**: | ||
42 | |||
43 | * (% style="color: rgb(0,0,0);" %)interface scope: events can either be ingoing (in event event) or outgoing (out event event). | ||
44 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)local scope: events are able to store a value.{{code language="none"}}internal: event localEvent : bool{{/code}}(%%) | ||
45 | |||
46 | {{{}}} | ||
47 | |||
48 | (% style="color: rgb(0,0,0);" %)**Variables:** | ||
49 | |||
50 | * variable:{{code language="none"}}var variable: string{{/code}} | ||
51 | |||
52 | {{{}}}(% style="color: rgb(0,0,0);" %)** ** | ||
53 | * read-only variable:{{code language="none"}}var readonly size: int = 10 {{/code}} | ||
54 | |||
55 | {{{}}} | ||
56 | * external variable: can be referenced by the environment | ||
57 | (% style="color: rgb(0,0,255);" %)Q: Wo werden diese sichtbar? {{code language="none"}}var external variable: int = 44{{/code}}(%%) | ||
58 | |||
59 | {{{}}} | ||
60 | )))|(% colspan="1" %)(% colspan="1" %) | ||
61 | ((( | ||
62 | |||
63 | ))) | ||
64 | |((( | ||
65 | **Types** | ||
66 | )))|((( | ||
67 | * **int** | ||
68 | * **bool** | ||
69 | * **string** | ||
70 | \\ | ||
71 | * **pure**: only makes sense for Signals. Signals are absent or present. | ||
72 | * **unsigned** | ||
73 | * **float** | ||
74 | * **double** | ||
75 | * **host: **no actual type is given. The given type in the hostType attribute is used. | ||
76 | )))|((( | ||
77 | * **integer** | ||
78 | * **boolean ** | ||
79 | * **string** | ||
80 | \\ | ||
81 | * **real** | ||
82 | * **void** | ||
83 | (% style="color: rgb(0,0,255);" %)Q: Wird das Metamodell/Typsystem in Zukunft noch weitere Typen bereitstellen?{{code language="none"}}{{/code}}(%%) | ||
84 | |||
85 | {{{}}} | ||
86 | )))|((( | ||
87 | |||
88 | ))) | ||
89 | |((( | ||
90 | **Expressions** | ||
91 | )))|((( | ||
92 | * **Logical AND:** var1 && var2 | ||
93 | * **Logical OR:** var1 || var2 | ||
94 | * **Logical NOT:** !var1 | ||
95 | |||
96 | |||
97 | {{{(A and B) or ((not C) and D) }}} | ||
98 | )))|((( | ||
99 | * **Logical AND:** var1 && var2 | ||
100 | * **Logical OR:** var1 || var2 | ||
101 | * **Logical NOT:** !var1 | ||
102 | * **Conditional Expression:** var1 ? var2 : var3 | ||
103 | (% style="color: rgb(0,0,255);" %)Q: Eventuell problematisch?{{code language="none"}}{{/code}}(%%) | ||
104 | |||
105 | {{{}}} | ||
106 | )))|((( | ||
107 | |||
108 | ))) | ||
109 | |((( | ||
110 | **Operations** | ||
111 | )))|((( | ||
112 | * **Equal**: '=' | ||
113 | * (% style="color: rgb(0,0,0);" %)**Less Than**(%%)**: '**<' | ||
114 | * (% style="color: rgb(0,0,0);" %)**Equal Or Less Than**(%%)**: '**<=' | ||
115 | * (% style="color: rgb(0,0,0);" %)**Greater Than**(%%)**:** '>' | ||
116 | * (% style="color: rgb(0,0,0);" %)**Equal Or Greater Than**(%%)**:** '>=' | ||
117 | * **NOT: '**!=' | ||
118 | * **Add**: '+' | ||
119 | * **Minus** : '-' | ||
120 | * **Multiply**: '*' | ||
121 | * **Divide**: '/' | ||
122 | * **Modulo**: 'mod' | ||
123 | \\ | ||
124 | * **Value**: '?' | ||
125 | |||
126 | {{{?B = 3}}} | ||
127 | * **PRE**: 'pre': | ||
128 | |||
129 | {{{pre(S):gives the presence status of S at the previous tick.}}} | ||
130 | |||
131 | {{{pre(?S):returns the value of S at the previous tick.}}} | ||
132 | * **NE**: '<>' | ||
133 | )))|((( | ||
134 | * **Equal**: '==' | ||
135 | * **less than:** '<' | ||
136 | * **Equal Or Less Than**: '<=' | ||
137 | * **Greater Than**: '>' | ||
138 | * **Equal Or Greater Than** '>=' | ||
139 | * **Not Equal:** '!=' | ||
140 | * **Plus:** '+' | ||
141 | * **Minus:** '-' | ||
142 | * **Multiply:** '*' | ||
143 | * **Divide:** '/' | ||
144 | * **Modulo:** '%' | ||
145 | \\ | ||
146 | * **Shift Left**: '<<' | ||
147 | * **Shift Right**: '>>' | ||
148 | * **Positive: '**+' | ||
149 | * **Negative: '**-' | ||
150 | * **Complement: **'~~' | ||
151 | )))|((( | ||
152 | |||
153 | ))) | ||
154 | |(% colspan="1" %)(% colspan="1" %) | ||
155 | ((( | ||
156 | **Trigger** | ||
157 | )))|(% colspan="1" %)(% colspan="1" %) | ||
158 | ((( | ||
159 | * Simple signal reference: I / O | ||
160 | * Boolean expression: | ||
161 | |||
162 | {{{(A and B) or ((not C) and D)}}} | ||
163 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)Valued Signals and Variables can be used in conditions in these boolean expressions(% style="color: rgb(0,0,0);" %) | ||
164 | |||
165 | {{{variable > 1}}} | ||
166 | |||
167 | {{{?A = 1}}} | ||
168 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)Comparison(% style="color: rgb(0,0,0);" %) | ||
169 | |||
170 | {{{?A > (variable + 1)}}} | ||
171 | |||
172 | {{{A and (3 > ?B) or ((var5 + 2) = 6)}}} | ||
173 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)Pre | ||
174 | |||
175 | {{{A and pre(B)}}} | ||
176 | |||
177 | {{{3 < pre(?A)}}} | ||
178 | * ((( | ||
179 | Immediate, #S: the trigger is satisfied as soon as the state is entered.. | ||
180 | ))) | ||
181 | * ((( | ||
182 | Count Delays, 3 S | ||
183 | |||
184 | {{{ }}} | ||
185 | ))) | ||
186 | * ((( | ||
187 | Time in SyncCharts: Multiform notion of time, | ||
188 | e.g., signal SECOND appears every second (depending on the physical tick length). | ||
189 | |||
190 | |||
191 | ))) | ||
192 | )))|(% colspan="1" %)(% colspan="1" %) | ||
193 | ((( | ||
194 | * **event:** | ||
195 | {{code language="none"}}I / raise O{{/code}} | ||
196 | |||
197 | {{{}}} | ||
198 | * **after**:{{code language="none"}}after 20 s{{/code}} | ||
199 | |||
200 | {{{}}} | ||
201 | * **every**{{code language="none"}}every 200 ms{{/code}} | ||
202 | |||
203 | {{{}}} | ||
204 | * **always: ** | ||
205 | (% style="color: rgb(0,0,0);" %)enables a reaction to be executed in every run to completion step | ||
206 | * (% style="color: rgb(0,0,0);" %)**default: **(%%) | ||
207 | (% style="color: rgb(0,0,0);" %)enables a reaction to be executed in every run to completion step | ||
208 | * (% style="color: rgb(0,0,0);" %)**else**: (%%) | ||
209 | (% style="color: rgb(0,0,0);" %)used in transitions and implies the lowest evaluation priority for that transition. | ||
210 | * (% style="color: rgb(0,0,0);" %)**entry** | ||
211 | * (% style="color: rgb(0,0,0);" %)**exit** | ||
212 | * (% style="color: rgb(0,0,0);" %)**oncycle**(%%) | ||
213 | {{code language="none"}}{{/code}} | ||
214 | |||
215 | {{{}}} | ||
216 | )))|(% colspan="1" %)(% colspan="1" %) | ||
217 | ((( | ||
218 | |||
219 | ))) | ||
220 | |(% colspan="1" %)(% colspan="1" %) | ||
221 | ((( | ||
222 | **Effects** | ||
223 | )))|(% colspan="1" %)(% colspan="1" %) | ||
224 | ((( | ||
225 | * Emission of a simple signal | ||
226 | |||
227 | {{{/ A}}} | ||
228 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)Emission of value of a valued Signal | ||
229 | |||
230 | {{{/ A(3)}}} | ||
231 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)Assignment of a variable(% style="color: rgb(0,0,0);" %) | ||
232 | |||
233 | {{{/ varA := 42}}} | ||
234 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)Multiple effects get comma- or whitespace separated(% style="color: rgb(0,0,0);" %) | ||
235 | |||
236 | {{{/ A, B, C(25), varA := 2}}} | ||
237 | * (% style="color: rgb(0, 0, 0); color: rgb(0, 0, 0); color: rgb(0, 0, 0)" %)New values may use value expressions as explained above | ||
238 | |||
239 | {{{/ A(3 + pre(?B)), varC := (varD + 1)}}} | ||
240 | )))|(% colspan="1" %)(% colspan="1" %) | ||
241 | ((( | ||
242 | * **raise** myvar | ||
243 | * **myvar = valueof(event)**: (% style="color: rgb(0,0,0);" %)Returns the value of an valued event that it passed to the function as parameter. | ||
244 | * **mybool = active(StateA)**: (% style="color: rgb(0,0,0);" %)Returns „true” if a state is active or „false” otherwise. | ||
245 | )))|(% colspan="1" %)(% colspan="1" %) | ||
246 | ((( | ||
247 | |||
248 | ))) | ||
249 | |||
250 | |||
251 | \\ |