reference.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543
  1. <?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5. <title>reference</title>
  6. <link type="text/css" rel="stylesheet" href="../style.css"/>
  7. </head>
  8. <body>
  9. <h1 id="YAKINDUSCT2Reference">YAKINDU SCT 2 Reference</h1>
  10. <h2 id="Statechartelements">State chart elements</h2>
  11. <p>In the following the state chart elements of the YAKINDU SCT 2 editor are described. The meta model of the YAKINDU SCT 2 is the model of finite state machines. It is based on the view of a system that is defined by a finite number of states. The behavior of that system is based on the active states. These states are determined by the history of the state machine. Very important are the theoretical models for state machines by Mealy and Moore. Mealy state machines associate actions with transitions. Moore machines associate actions with states (entry, exit). In the YAKINDU SCT 2 both is possible.</p>
  12. <p>The YAKINDU SCT 2 meta model is designed similar to the UML state chart meta model with the following differences</p>
  13. <ul>
  14. <li>they are self contained with interfaces defined by events and variables</li>
  15. <li>core execution semantics are cycle driven, not event driven
  16. <ul>
  17. <li>this allows to process concurrent events</li>
  18. <li>event driven behavior can be defined on top</li>
  19. </ul>
  20. </li>
  21. <li>time is an abstract concept for state charts</li>
  22. <li>time control is delegated to the environment</li>
  23. </ul>
  24. <p>The model interpreter and different flavors of generated code follow these same core semantics.</p>
  25. <p>Please refer to the description of the
  26. <a href="http://en.wikipedia.org/wiki/UML_state_machine">UML Statecharts</a> for more details.
  27. </p>
  28. <h3 id="Regions">Regions</h3>
  29. <p>As already mentioned the YAKINDU state charts are self contained. They are organized in regions. Due to this it is possible to organize multiple state machines in different regions and to run them concurrently. </p>
  30. <p>
  31. <img border="0" src="images/parallelRegions.jpg"/>
  32. </p>
  33. <h3 id="States">States</h3>
  34. <p>States are the central elements of a state machine. A state has to be placed inside a region and needs a unique name inside this region. During simulation each state can be active or passive. An active state has actions that are accomplished. Either an action is carried out on entering a state, during active state or on exit. </p>
  35. <h3 id="Transitions">Transitions</h3>
  36. <p>A transition is the transfer of one state to another. Transitions are diagrammed as arrows and can carry events and actions but must not. </p>
  37. <p>The syntax of events and actions is defined by a textual description language (#Statechartdescriptionlanguage). Please refer to the documentation section
  38. <a href="#Events">Events</a> for more details. For more details on Actions refer to the chapter
  39. <a href="#ReactionTriggers">Actions</a>.
  40. </p>
  41. <p>If a state has more than one outgoing transition without event that transition is carried out first that was modeled first.</p>
  42. <h3 id="Initialstateandfinalstate">Initial state and final state</h3>
  43. <p>Initial and final states are pseudo states, because the state chart does not rest on them. Pseudo states express characteristics that are impossible to express by simple states. </p>
  44. <p>The initial state is always the first state that is active during interpretation or simulation of the state machine. An initial state can only have one outgoing transition and no incoming. This transition has no events or actions.</p>
  45. <p>Inside a region only one initial state is allowed, but every region can have an initial state.</p>
  46. <h3 id="Choice">Choice</h3>
  47. <p>Choice is also a pseudo state. It can be used to model a conditional path. Choice nodes divide a transition into multiple parts. </p>
  48. <p>Usually the first transition points towards the choice node. One of the choice outgoing transitions can carry a condition. </p>
  49. <h3 id="Junction">Junction</h3>
  50. <p>A junction is a pseudo state do combine transitions. This is very comfortable if a state machine has many similar transitions. Junctions add clear arrangement to the state machine.</p>
  51. <h3 id="CompositeState">Composite State</h3>
  52. <p>A composite state is a state that is composed of other state machines. These are also organized in regions. Besides the simple composite state YAKINDU knows two kinds of composite states: orthogonal state and submachine states.</p>
  53. <p>Composite states contain other state machine branches.</p>
  54. <h4 id="Orthogonalstates">Orthogonal states</h4>
  55. <p>In the context of state machines orthogonal states are states that are independent from each other. The most famous example is the keyboard example:</p>
  56. <p>
  57. <img border="0" src="images/orthogonalState_example.jpg"/>
  58. </p>
  59. <h4 id="Submachinestates">Submachine states</h4>
  60. <p>Submachine states may contain complete state machines. Here the user can chose another state machine to be included or create a new sub statemachine. During simulation only the top level statemachine is interpreted. It is not possible to jump to the sub level state machines and back.</p>
  61. <p>
  62. <img border="0" src="images/substatemachine_example.jpg"/>
  63. </p>
  64. <h3 id="ShallowHistory">Shallow History</h3>
  65. <p>The shallow history state is a pseudo state that is placed inside regions of composite states. It is used to &#8218;remember&#8217; the last active state inside a composite state. So it is possible to jump to this state instead of starting at the inner entry state again. The following example of a questionaire answering will explain this:</p>
  66. <p>
  67. <img border="0" src="images/shallowHistory01.jpg"/>
  68. </p>
  69. <p>The interesting parts in this state chart are the events
  70. <em>checkProgress</em> and
  71. <em>goon</em>. CheckProgress jumps back to the init state while assigning the current progress count to the variable
  72. <em>temp</em>.
  73. <em>goon</em> jumps to the shallow history state that was placed inside the composite state.
  74. </p>
  75. <p>
  76. <img border="0" src="images/shallowHistory02.jpg"/>
  77. </p>
  78. <p>
  79. <img border="0" src="images/shallowHistory03.jpg"/>
  80. </p>
  81. <p>On triggering the
  82. <em>goon</em> event the last active state is activated again.
  83. </p>
  84. <h3 id="DeepHistory">Deep History</h3>
  85. <p>Deep history is similar to shallow history but more complex. With a deep history the latest state of multiple nested states is remembered.</p>
  86. <h2 id="Statechartdescriptionlanguage">Statechart description language</h2>
  87. <p>The textual description language is used to declare and describe behaviors in the state machine. It is case sensitive.</p>
  88. <h3 id="Typesystem">Typesystem</h3>
  89. <p>The language has an integrated small typesystem with the following simple types:</p>
  90. <ul>
  91. <li>integer</li>
  92. <li>real</li>
  93. <li>boolean</li>
  94. <li>string</li>
  95. <li>void</li>
  96. </ul>
  97. <p>So events and variables can be declared with types:</p>
  98. <pre><code>var intVar : integer
  99. var realVar : real
  100. var boolVar : boolean
  101. var stringVar : string
  102. var voidVar : void
  103. event addInt : integer
  104. event checkValidity : boolean
  105. </code></pre>
  106. <h3 id="Expressions">Expressions</h3>
  107. <p>Expressions can be defined similar to other programming languages. The language offers operators to define logical expressions, bitwise arithmetic, and arithmetic expressions and bit shifting.</p>
  108. <p>Logical expressions are similar to other programming languages. The return type is
  109. <strong>boolean</strong>. In the following there are some examples of these:
  110. </p>
  111. <h4 id="LogicalAND">Logical AND</h4>
  112. <pre><code>var1 &amp;&amp; var2
  113. </code></pre>
  114. <h4 id="LogicalOR">Logical OR</h4>
  115. <pre><code>var1 || var2
  116. </code></pre>
  117. <h4 id="LogicalNOT">Logical NOT</h4>
  118. <pre><code>!var1
  119. </code></pre>
  120. <h4 id="Conditionalexpression">Conditional expression</h4>
  121. <pre><code>var1 ? var2 : 23
  122. </code></pre>
  123. <h4 id="BitwiseXOR">Bitwise XOR</h4>
  124. <pre><code>var1 ^ var2
  125. </code></pre>
  126. <h4 id="BitwiseOR">Bitwise OR</h4>
  127. <pre><code>var1 | var2
  128. </code></pre>
  129. <h4 id="BitwiseAND">Bitwise AND</h4>
  130. <pre><code>var1 &amp; var2
  131. </code></pre>
  132. <h4 id="LogicalRelationsandShiftOperators">Logical Relations and Shift Operators</h4>
  133. <table>
  134. <tr>
  135. <td>less than </td>
  136. <td>&lt; </td>
  137. </tr>
  138. <tr>
  139. <td>equal or less than </td>
  140. <td>&lt;= </td>
  141. </tr>
  142. <tr>
  143. <td>greater than </td>
  144. <td>&gt; </td>
  145. </tr>
  146. <tr>
  147. <td>equal or greater than </td>
  148. <td>&gt;= </td>
  149. </tr>
  150. <tr>
  151. <td>equal </td>
  152. <td>== </td>
  153. </tr>
  154. <tr>
  155. <td>not equal </td>
  156. <td>!= </td>
  157. </tr>
  158. <tr>
  159. <td>shift left </td>
  160. <td>&lt;&lt; </td>
  161. </tr>
  162. <tr>
  163. <td>shift right </td>
  164. <td>&gt;&gt; </td>
  165. </tr>
  166. </table>
  167. <h4 id="Binaryarithmeticoperators">Binary arithmetic operators</h4>
  168. <table>
  169. <tr>
  170. <td>plus </td>
  171. <td>+ </td>
  172. </tr>
  173. <tr>
  174. <td>minus </td>
  175. <td>- </td>
  176. </tr>
  177. <tr>
  178. <td>multiply </td>
  179. <td>* </td>
  180. </tr>
  181. <tr>
  182. <td>divide </td>
  183. <td>/ </td>
  184. </tr>
  185. <tr>
  186. <td>modulo </td>
  187. <td>% </td>
  188. </tr>
  189. </table>
  190. <h4 id="Unaryarithmeticoperators">Unary arithmetic operators</h4>
  191. <table>
  192. <tr>
  193. <td>positive </td>
  194. <td>+ </td>
  195. </tr>
  196. <tr>
  197. <td>negative </td>
  198. <td>- </td>
  199. </tr>
  200. <tr>
  201. <td>circa </td>
  202. <td>~ </td>
  203. </tr>
  204. </table>
  205. <h3 id="Statements">Statements</h3>
  206. <p>A statements can be either an assignment, raising an event or call an operation. The language has the following assignment operators:</p>
  207. <ul>
  208. <li>simple assignment: = </li>
  209. <li>multiply and assign: *= </li>
  210. <li>divide and assign: /= </li>
  211. <li>calculate modulo and assign: %= </li>
  212. <li>add and assign: += </li>
  213. <li>subtract and assign: -= </li>
  214. <li>bitshift left and assign: &lt;&lt;= </li>
  215. <li>bitshift right and assign: &gt;&gt;= </li>
  216. <li>bitwise AND and assign: &amp;= </li>
  217. <li>bitwise XOR and assign: ^= </li>
  218. <li>bitwise OR and assign:
  219. <code>|=</code>
  220. </li>
  221. </ul>
  222. <p>An event is raised by the keyword
  223. <em>raise</em> followed by the event name and if it is an interface event the name of the interface.
  224. </p>
  225. <p>An operation is called similar to other programming languages with the operation name and passing concrete parameters. The parameters can be expressions.</p>
  226. <h3 id="Scopes">Scopes</h3>
  227. <p><!-- Start stext_keyword_namespace --></p>
  228. <h4 id="Namespace">Namespace</h4>
  229. <p>The language allows to define unique namespaces, which can be used to qualify references to the statechart.</p>
  230. <pre><code>namespace trafficlights
  231. </code></pre>
  232. <p><!-- End stext_keyword_namespace -->
  233. <br/><!-- Start stext_keyword_interface -->
  234. </p>
  235. <h4 id="interfacescope">interface scope</h4>
  236. <p>Declarations in the interface scope are externally visible. They can be shared within the environment.</p>
  237. <pre><code>interface NamedInterface:
  238. in event event1
  239. out event event3
  240. var variable1 : real
  241. entrypoint entry1
  242. exitpoint exit1
  243. </code></pre>
  244. <p><!-- End stext_keyword_interface -->
  245. <br/><!-- Start stext_keyword_internal -->
  246. </p>
  247. <h4 id="internalscope">internal scope</h4>
  248. <p>Declarations made in an internal scope are only visible for contained states.</p>
  249. <pre><code>internal:
  250. var localVariable1: integer
  251. event localEvent: integer
  252. local event localEvent2: NamedInterface.event1 || localEvent
  253. local event localEvent3: localEvent || localEvent2 : 25
  254. operation localOperation (integer, integer): integer
  255. localEvent3 / raise NamedInterface.event3 :
  256. localOperation(valueOf(localEvent),NamedInterface.variable1);
  257. </code></pre>
  258. <p><!-- End stext_keyword_internal --></p>
  259. <h3 id="Declarations">Declarations</h3>
  260. <p>Within scopes there can be declarations of Events, Variables, Operations, LocalReactions, EntryPoints and ExitPoints.</p>
  261. <p><!-- Start stext_keyword_event --></p>
  262. <h3 id="Events">Events</h3>
  263. <p>Within interface scope events have an direction. They can either be ingoing or outgoing:</p>
  264. <pre><code>interface NamedInterface:
  265. in event event1
  266. out event event2
  267. </code></pre>
  268. <p>Within local scope events can carry variables:</p>
  269. <pre><code>internal:
  270. event localEvent1 : integer
  271. </code></pre>
  272. <p>Local events can be derived from interface events or other local events and can have a value assignment:</p>
  273. <pre><code>internal:
  274. event localEvent1: integer
  275. local event localEvent2 = NamedInterface.event1 || localEvent1
  276. local event localEvent3 = localEvent2 || 25
  277. </code></pre>
  278. <p><!-- End stext_keyword_event --></p>
  279. <p><!-- Start stext_keyword_var --></p>
  280. <h3 id="Variables">Variables</h3>
  281. <p>Variables can have different visibilities. They can be visible for the environment:</p>
  282. <pre><code>var variable1: real
  283. </code></pre>
  284. <p>Variables can be
  285. <strong>readonly</strong> (constants):
  286. </p>
  287. <pre><code>var readonly pi: real = 3.1415
  288. </code></pre>
  289. <p>Variables can be referenced by the environment.</p>
  290. <pre><code>var external variable3: integer = 34
  291. </code></pre>
  292. <p><!-- End stext_keyword_var --></p>
  293. <h3 id="ReactionTriggers">Reaction Triggers</h3>
  294. <p>Actions are key constructs in state machines to model behavior. The YAKINDU SCT 2 knows the following kinds of actions.</p>
  295. <p><!-- Start stext_keyword_after --></p>
  296. <h4 id="after">after</h4>
  297. <p>The
  298. <em>after</em> trigger specifies one-shot time events.
  299. </p>
  300. <p>After the specified time the reaction is triggered. An
  301. <em>after</em> trigger can be used in transitions of states as well in local reactions of states and statecharts. The specified time starts when the state or statechart is entered.
  302. </p>
  303. <pre><code>after 20 s
  304. </code></pre>
  305. <p>Structure: </p>
  306. <p>
  307. <code>after</code>
  308. <em>
  309. <code>time</code>
  310. </em> (
  311. <em>
  312. <code>unit</code>
  313. </em>)?
  314. </p>
  315. <p>The time unit can be:</p>
  316. <ul>
  317. <li><!-- Start stext_keyword_s --> s &#8211; seconds <!-- End stext_keyword_s --></li>
  318. <li><!-- Start stext_keyword_ms --> ms &#8211; milliseconds <!-- End stext_keyword_ms --></li>
  319. <li><!-- Start stext_keyword_us --> us &#8211; microseconds <!-- End stext_keyword_us --></li>
  320. <li><!-- Start stext_keyword_ns --> ns &#8211; nanoseconds <!-- End stext_keyword_ns --></li>
  321. <li>empty &#8211; implies seconds</li>
  322. </ul>
  323. <p><!-- End stext_keyword_after -->
  324. <br/><!-- Start stext_keyword_every -->
  325. </p>
  326. <h4 id="every">every</h4>
  327. <p>The
  328. <em>every</em> trigger specifies periodic time events.
  329. </p>
  330. <p>The reaction is triggered periodically after the specified time. An
  331. <em>every</em> trigger can be used in transitions of states as well in local reactions of states and statecharts. The specified time starts when the state or statechart is entered and repeats periodically.
  332. </p>
  333. <pre><code>every 200 ms
  334. </code></pre>
  335. <p>Structure: </p>
  336. <p>
  337. <code>every</code>
  338. <em>
  339. <code>time</code>
  340. </em> (
  341. <em>
  342. <code>unit</code>
  343. </em>)?
  344. </p>
  345. <p>The time unit can be:</p>
  346. <ul>
  347. <li>s &#8211; seconds</li>
  348. <li>ms &#8211; milliseconds</li>
  349. <li>us &#8211; microseconds</li>
  350. <li>ns &#8211; nanoseconds</li>
  351. <li>empty &#8211; implies seconds</li>
  352. </ul>
  353. <p><!-- End stext_keyword_every -->
  354. <br/><!-- Start stext_keyword_always -->
  355. </p>
  356. <h4 id="always">always</h4>
  357. <p>This trigger is always true and enables a reaction to be executed in every run to completion step (RTS). It is equivalent to
  358. <em>oncycle</em>.
  359. </p>
  360. <p><!-- End stext_keyword_always --></p>
  361. <p><!-- Start stext_keyword_default -->
  362. <br/><!-- Start stext_keyword_else -->
  363. </p>
  364. <h4 id="defaultelse">default, else</h4>
  365. <p>The
  366. <em>default</em> trigger is equivalent to the
  367. <em>else</em> trigger. It is intended for use for the outgoing transitions of
  368. <em>choice</em> pseudo states, to make sure that always an outgoing transition can be taken. It can only be be used in transitions and implies the lowest evaluation priority for that transition.
  369. </p>
  370. <p><!-- End stext_keyword_else -->
  371. <br/><!-- End stext_keyword_default -->
  372. </p>
  373. <p><!-- Start stext_keyword_entry --></p>
  374. <h4 id="entry">entry</h4>
  375. <p>An
  376. <em>entry</em> trigger marks actions that are carried out on entering a state or state machine.
  377. </p>
  378. <p><!-- End stext_keyword_entry -->
  379. <br/><!-- Start stext_keyword_exit -->
  380. </p>
  381. <h4 id="exit">exit</h4>
  382. <p>An
  383. <em>exit</em> trigger marks actions that are carried out on exiting a state or state machine.
  384. </p>
  385. <p><!-- End stext_keyword_exit -->
  386. <br/><!-- Start stext_keyword_oncycle -->
  387. </p>
  388. <h4 id="oncycle">oncycle</h4>
  389. <p>The
  390. <em>oncycle</em> trigger is always true and enables a reaction to be executed in every run to completion step (RTS). It is equivalent to
  391. <em>always</em>.
  392. </p>
  393. <p><!-- End stext_keyword_oncycle -->
  394. <br/><!-- Start stext_keyword_operation -->
  395. </p>
  396. <h3 id="Operations">Operations</h3>
  397. <p>Operations can have none, one or multiple parameters. The parameters are only declarated by their type. An operation can have one return type similar to Java.</p>
  398. <pre><code>operation localOperation (integer, integer):integer
  399. localEvent3/ raise NamedInterface3.event1
  400. </code></pre>
  401. <p><!-- End stext_keyword_operation --></p>
  402. <h3 id="LocalReactions">LocalReactions</h3>
  403. <p>Local reactions describe the internal behavior of a state. So they have internal scope. A local reaction is declared as follows:</p>
  404. <pre><code>LocalReaction: ReactionTrigger '/' ReactionEffect ('#' ReactionProperties)?
  405. ReactionTrigger: (Event ("," Event )* (=&gt; '[' Expression ']')?) | '[' Expression ']'
  406. ReactionEffect: Statement (';' Statement )* (';')?
  407. Statement: Assignment | EventRaising | OperationCall
  408. ReactionProperties: (EntryPoint | ExitPoint)*
  409. </code></pre>
  410. <p>Within a local reaction an interface event can be raised:</p>
  411. <pre><code>internal:
  412. localEvent1 / raise NamedInterface.event3 : localOperation (valueOf(localEvent), NamedInterface.variable1);
  413. </code></pre>
  414. <p>Local reactions can have priority values. These are defined by a following # and the integer number of priority:</p>
  415. <pre><code>localEvent2 / NamedInterface.variable2 += 3; #1
  416. localEvent3 / NamedInterface.variable4 += 2.0; #2
  417. </code></pre>
  418. <p><!-- Start stext_keyword_entrypoint --></p>
  419. <h3 id="EntryPoints">EntryPoints</h3>
  420. <p>Every state chart has an entry point. An entry point can be declared like the following:</p>
  421. <pre><code>entrypoint entry1
  422. </code></pre>
  423. <p><!-- End stext_keyword_entrypoint -->
  424. <br/><!-- Start stext_keyword_exitpoint -->
  425. </p>
  426. <h3 id="ExitPoints">ExitPoints</h3>
  427. <p>Every state chart has an exit point. This exit point can be declared like the following.</p>
  428. <pre><code>exitpoint exit1
  429. </code></pre>
  430. <p><!-- End stext_keyword_exitpoint --></p>
  431. <h2 id="SGraph">SGraph</h2>
  432. <p>SGraph is the metamodel for the graphical part of the statechart editor. It owns all core elements of a state machine like states, pseudostates, transitons etc. but it describes how these elements shall be shown by the editor.</p>
  433. <h2 id="SExec">SExec</h2>
  434. <p>SExec is the name of an intermediate execution model. This intermediate model is used behind the scenes as a foundation for the code generators and the simulation engine. This guarantees that the simulation behaves in the same way as the generated Statechart implementations. It captures the execution behavior and may also serve as the basis of custom code generators.</p>
  435. <h2 id="SGen">SGen</h2>
  436. <p>All generators can be customized with a generator model. This is a textual model file where generator features, like i.e. the outlet path, can be specified. The following screenshot shows an example configuration for the java code generator. </p>
  437. <p>To get started with the generator model, we included a new Eclipse wizard that creates a basic configuration file with default values.</p>
  438. <p>
  439. <img border="0" src="images/sGenEditor.png"/>
  440. </p>
  441. <p>The generator model is associated with the builder. If
  442. <strong>Project</strong> &gt;
  443. <strong>Build Automatically</strong> is checked the files are generated. In the following the specific customizing features of the generator models are explained.
  444. </p>
  445. <h3 id="GeneratormodelforJava">Generator model for Java</h3>
  446. <p>The generator model for Java is used to customize the generation of Java code from the state chart model. </p>
  447. <h4 id="FeatureOutlet">Feature Outlet</h4>
  448. <p>With the feature
  449. <strong>Outlet</strong> you define the folder the source files will be generated in:
  450. </p>
  451. <pre><code> feature Outlet {
  452. targetProject = "org.terra.coffee.machine"
  453. targetFolder = "src-gen"
  454. }
  455. </code></pre>
  456. <h4 id="FeatureLicenseHeader">Feature LicenseHeader</h4>
  457. <p>With the feature Licence header you can set a licence text that is added to the headers of all generated files:</p>
  458. <pre><code> feature licenseHeader {
  459. licenseText = "Copyright (c) 2012 itemis AG.
  460. All rights reserved."
  461. }
  462. </code></pre>
  463. <h4 id="FeatureDebug">Feature Debug</h4>
  464. <p>The feature debug controls the output of debug information. An important information source is the intermediate model sExec.</p>
  465. <pre><code> feature Debug {
  466. dumpSexec = false
  467. }
  468. </code></pre>
  469. <h4 id="FeatureFunctionInlining">Feature FunctionInlining</h4>
  470. <pre><code> feature FunctionInlining {
  471. inlineChoices=true
  472. inlineEnterRegion=true
  473. inlineEnterSequences=true
  474. inlineEntries=true
  475. inlineEntryActions=true
  476. inlineExitActions=true
  477. inlineExitRegion=true
  478. inlineExitSequences=true
  479. inlineReactions=true
  480. }
  481. </code></pre>
  482. <h4 id="FeatureGeneralFeatures">Feature GeneralFeatures</h4>
  483. <pre><code> feature GeneralFeatures {
  484. EventBasedStatemachine=true
  485. GenericInterfaceSupport=true
  486. InterfaceObserverSupport=true
  487. RuntimeService=false
  488. StatemachineFactorySupport=true
  489. TimerService=true
  490. }
  491. </code></pre>
  492. <h4 id="FeatureNaming">Feature Naming</h4>
  493. <pre><code> feature Naming {
  494. basePackage="org.java"
  495. implementationSuffix="ipl"
  496. }
  497. </code></pre>
  498. <h3 id="GeneratormodelforC">Generator model for C</h3>
  499. <h4 id="FeatureOutlet2">Feature Outlet</h4>
  500. <p>The feature is similar to the target language Java.</p>
  501. <h4 id="FeatureLicenseHeader2">Feature LicenseHeader</h4>
  502. <p>The feature is similar to the target language Java.</p>
  503. <h4 id="FeatureDebug2">Feature Debug</h4>
  504. <p>The feature is similar to the target language Java.</p>
  505. <h4 id="FeatureCCodeFeature">Feature CCodeFeature</h4>
  506. <pre><code> feature CCodeFeature {
  507. DebugType="DEBUG"
  508. InterfaceEventListener=false
  509. Singleton=true
  510. }
  511. </code></pre>
  512. <h4 id="FeatureFunctionInlining2">Feature FunctionInlining</h4>
  513. <h3 id="GeneratormodelforC2">Generator model for C++</h3>
  514. <h4 id="FeatureOutlet3">Feature Outlet</h4>
  515. <p>The feature is similar to the target language Java.</p>
  516. <h4 id="FeatureLicenseHeader3">Feature LicenseHeader</h4>
  517. <p>The feature is similar to the target language Java.</p>
  518. <h4 id="FeatureDebug3">Feature Debug</h4>
  519. <p>The feature is similar to the target language Java.</p>
  520. <h4 id="FeatureFunctionInlining3">Feature FunctionInlining</h4>
  521. </body>
  522. </html>