Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.38 KB | None | 0 0
  1. Exception in thread "main" org.scribble.ext.assrt.core.ast.AssrtCoreSyntaxException: Clock(line 20:6): [assrt-core] Unguarded in choice case: rec Clock_Lock___C__A__B_ @(")" {
  2. REQ(tsrab: Clock.int) from C to A; null
  3. REQ(tsrac: Clock.int) from C to B; @(tsrac > tsrab);
  4. choice at A {
  5. ACK(tsaba: Clock.int) from A to C; @(tsaba > tsrab);
  6. choice at B {
  7. ACK(tsaca: Clock.int) from B to C; @(tsaca > tsrac);
  8. REL(tsreab: Clock.int) from C to A; @(tsreab > tsrab);
  9. REL(tsreac: Clock.int) from C to B; @(tsreac > tsrac);
  10. } or {
  11. rec Clock_Lock___B__C__A_ @(")" {
  12. REQ(tsrab: Clock.int) from B to C; null
  13. REQ(tsrac: Clock.int) from B to A; @(tsrac > tsrab);
  14. choice at C {
  15. ACK(tsaba: Clock.int) from C to B; @(tsaba > tsrab);
  16. choice at A {
  17. ACK(tsaca: Clock.int) from A to B; @(tsaca > tsrac);
  18. REL(tsreab: Clock.int) from B to C; @(tsreab > tsrab);
  19. REL(tsreac: Clock.int) from B to A; @(tsreac > tsrac);
  20. } or {
  21. continue Clock_Lock___A__B__C_; @;
  22. }
  23. } or {
  24. rec Clock_Lock___C__B__A_ @(")" {
  25. REQ(tsrab: Clock.int) from C to B; null
  26. REQ(tsrac: Clock.int) from C to A; @(tsrac > tsrab);
  27. choice at B {
  28. ACK(tsaba: Clock.int) from B to C; @(tsaba > tsrab);
  29. choice at A {
  30. ACK(tsaca: Clock.int) from A to C; @(tsaca > tsrac);
  31. REL(tsreab: Clock.int) from C to B; @(tsreab > tsrab);
  32. REL(tsreac: Clock.int) from C to A; @(tsreac > tsrac);
  33. } or {
  34. rec Clock_Lock___A__C__B_ @(")" {
  35. REQ(tsrab: Clock.int) from A to C; null
  36. REQ(tsrac: Clock.int) from A to B; @(tsrac > tsrab);
  37. choice at C {
  38. ACK(tsaba: Clock.int) from C to A; @(tsaba > tsrab);
  39. choice at B {
  40. ACK(tsaca: Clock.int) from B to A; @(tsaca > tsrac);
  41. REL(tsreab: Clock.int) from A to C; @(tsreab > tsrab);
  42. REL(tsreac: Clock.int) from A to B; @(tsreac > tsrac);
  43. } or {
  44. rec Clock_Lock___B__A__C_ @(")" {
  45. REQ(tsrab: Clock.int) from B to A; null
  46. REQ(tsrac: Clock.int) from B to C; @(tsrac > tsrab);
  47. choice at A {
  48. ACK(tsaba: Clock.int) from A to B; @(tsaba > tsrab);
  49. choice at C {
  50. ACK(tsaca: Clock.int) from C to B; @(tsaca > tsrac);
  51. REL(tsreab: Clock.int) from B to A; @(tsreab > tsrab);
  52. REL(tsreac: Clock.int) from B to C; @(tsreac > tsrac);
  53. } or {
  54. continue Clock_Lock___C__B__A_; @;
  55. }
  56. } or {
  57. continue Clock_Lock___A__B__C_; @;
  58. }
  59. }
  60. }
  61. } or {
  62. continue Clock_Lock___C__A__B_; @;
  63. }
  64. }
  65. }
  66. } or {
  67. continue Clock_Lock___B__C__A_; @;
  68. }
  69. }
  70. }
  71. }
  72. }
  73. } or {
  74. rec Clock_Lock___A__C__B_ @(")" {
  75. REQ(tsrab: Clock.int) from A to C; null
  76. REQ(tsrac: Clock.int) from A to B; @(tsrac > tsrab);
  77. choice at C {
  78. ACK(tsaba: Clock.int) from C to A; @(tsaba > tsrab);
  79. choice at B {
  80. ACK(tsaca: Clock.int) from B to A; @(tsaca > tsrac);
  81. REL(tsreab: Clock.int) from A to C; @(tsreab > tsrab);
  82. REL(tsreac: Clock.int) from A to B; @(tsreac > tsrac);
  83. } or {
  84. rec Clock_Lock___B__A__C_ @(")" {
  85. REQ(tsrab: Clock.int) from B to A; null
  86. REQ(tsrac: Clock.int) from B to C; @(tsrac > tsrab);
  87. choice at A {
  88. ACK(tsaba: Clock.int) from A to B; @(tsaba > tsrab);
  89. choice at C {
  90. ACK(tsaca: Clock.int) from C to B; @(tsaca > tsrac);
  91. REL(tsreab: Clock.int) from B to A; @(tsreab > tsrab);
  92. REL(tsreac: Clock.int) from B to C; @(tsreac > tsrac);
  93. } or {
  94. rec Clock_Lock___C__B__A_ @(")" {
  95. REQ(tsrab: Clock.int) from C to B; null
  96. REQ(tsrac: Clock.int) from C to A; @(tsrac > tsrab);
  97. choice at B {
  98. ACK(tsaba: Clock.int) from B to C; @(tsaba > tsrab);
  99. choice at A {
  100. ACK(tsaca: Clock.int) from A to C; @(tsaca > tsrac);
  101. REL(tsreab: Clock.int) from C to B; @(tsreab > tsrab);
  102. REL(tsreac: Clock.int) from C to A; @(tsreac > tsrac);
  103. } or {
  104. continue Clock_Lock___A__C__B_; @;
  105. }
  106. } or {
  107. rec Clock_Lock___B__C__A_ @(")" {
  108. REQ(tsrab: Clock.int) from B to C; null
  109. REQ(tsrac: Clock.int) from B to A; @(tsrac > tsrab);
  110. choice at C {
  111. ACK(tsaba: Clock.int) from C to B; @(tsaba > tsrab);
  112. choice at A {
  113. ACK(tsaca: Clock.int) from A to B; @(tsaca > tsrac);
  114. REL(tsreab: Clock.int) from B to C; @(tsreab > tsrab);
  115. REL(tsreac: Clock.int) from B to A; @(tsreac > tsrac);
  116. } or {
  117. continue Clock_Lock___A__B__C_; @;
  118. }
  119. } or {
  120. continue Clock_Lock___C__B__A_; @;
  121. }
  122. }
  123. }
  124. }
  125. }
  126. } or {
  127. continue Clock_Lock___A__B__C_; @;
  128. }
  129. }
  130. }
  131. } or {
  132. continue Clock_Lock___C__A__B_; @;
  133. }
  134. }
  135. }
  136. }
  137. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:131)
  138. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseGChoice(AssrtCoreGProtocolDeclTranslator.java:163)
  139. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:140)
  140. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseGSimpleInteractionNode(AssrtCoreGProtocolDeclTranslator.java:293)
  141. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseAssrtGMessageTransfer(AssrtCoreGProtocolDeclTranslator.java:266)
  142. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:108)
  143. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseGChoice(AssrtCoreGProtocolDeclTranslator.java:163)
  144. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:140)
  145. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseGSimpleInteractionNode(AssrtCoreGProtocolDeclTranslator.java:293)
  146. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseAssrtGMessageTransfer(AssrtCoreGProtocolDeclTranslator.java:266)
  147. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:108)
  148. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseGSimpleInteractionNode(AssrtCoreGProtocolDeclTranslator.java:293)
  149. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseAssrtGMessageTransfer(AssrtCoreGProtocolDeclTranslator.java:266)
  150. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:108)
  151. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseAssrtGRecursion(AssrtCoreGProtocolDeclTranslator.java:223)
  152. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.parseSeq(AssrtCoreGProtocolDeclTranslator.java:144)
  153. at org.scribble.ext.assrt.core.ast.global.AssrtCoreGProtocolDeclTranslator.translate(AssrtCoreGProtocolDeclTranslator.java:91)
  154. at org.scribble.ext.assrt.cli.AssrtCommandLine.assrtCoreParseAndCheckWF(AssrtCommandLine.java:184)
  155. at org.scribble.ext.assrt.cli.AssrtCommandLine.doAssrtCoreValidationTasks(AssrtCommandLine.java:141)
  156. at org.scribble.ext.assrt.cli.AssrtCommandLine.doValidationTasks(AssrtCommandLine.java:116)
  157. at org.scribble.cli.CommandLine.runBody(CommandLine.java:145)
  158. at org.scribble.cli.CommandLine.run(CommandLine.java:108)
  159. at org.scribble.ext.assrt.cli.AssrtCommandLine.main(AssrtCommandLine.java:108)
  160.  
  161.  
  162.  
  163. module Clock;
  164.  
  165. type <java> "java.lang.Integer" from "rt.jar" as int;
  166.  
  167. global protocol Lock(role A, role B, role C)
  168. {
  169. REQ (tsrab:int) from A to B;
  170. REQ (tsrac:int) from A to C; @"tsrac > tsrab"
  171. choice at B
  172. {
  173. ACK (tsaba:int) from B to A; @"tsaba > tsrab"
  174. choice at C
  175. {
  176. ACK (tsaca:int) from C to A; @"tsaca > tsrac"
  177. REL (tsreab:int) from A to B; @"tsreab > tsrab"
  178. REL (tsreac:int) from A to C; @"tsreac > tsrac"
  179. }
  180. or
  181. {
  182. do Lock(C, A, B);
  183. }
  184.  
  185. }
  186. or
  187. {
  188. do Lock(B, A, C); // should we set the initial clocks here?
  189. }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement