MvK_rules.mvc 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. Rule Access_Eval_N1 {
  2. Root N1_root {}
  3. Match N1_userroot {
  4. match = True
  5. }
  6. Match N1_frame {
  7. match = True
  8. }
  9. Delete N1_phase_D {
  10. value = "'eval'"
  11. match = True
  12. }
  13. Match N1_IP {
  14. value = "!access"
  15. match = True
  16. }
  17. Create N1_phase_C {
  18. value = "'finish'"
  19. }
  20. Delete N1_RV_D {}
  21. Create N1_RV_C {}
  22. Match N1_val {}
  23. MatchEdge (N1_root, N1_userroot) {
  24. value = "username"
  25. }
  26. MatchEdge (N1_userroot, N1_frame) {
  27. value = "'frame'"
  28. }
  29. MatchEdge (N1_frame, N1_IP) {
  30. value = "'IP'"
  31. }
  32. DeleteEdge (N1_frame, N1_phase_D) {
  33. value = "'phase'"
  34. }
  35. CreateEdge (N1_frame, N1_phase_C) {
  36. value = "'phase'"
  37. }
  38. CreateEdge (N1_frame, N1_RV_C) {
  39. value = "'returnvalue'"
  40. }
  41. DeleteEdge (N1_frame, N1_RV_D) {
  42. value = "'returnvalue'"
  43. }
  44. MatchEdge (N1_RV_D, N1_RV_C) {
  45. value = "'value'"
  46. }
  47. }
  48. Rule Access_Init_N2 {
  49. Root N2_root {}
  50. Match N2_userroot {
  51. match = True
  52. }
  53. Match N2_frame {
  54. match = True
  55. }
  56. Match N2_phase {
  57. match = True
  58. value = "'init'"
  59. }
  60. Match N2_IP_old {
  61. match = True
  62. value = "!access"
  63. }
  64. Create N2_evalstack_C {}
  65. Match N2_evalstack_M {}
  66. Match N2_IP_new {}
  67. Create N2_phase_new {
  68. value = "'eval'"
  69. }
  70. MatchEdge (N2_root, N2_userroot) {
  71. value = "username"
  72. }
  73. MatchEdge (N2_userroot, N2_frame) {
  74. value = "'frame'"
  75. }
  76. MatchEdge (N2_frame, N2_phase) {
  77. value = "'phase'"
  78. }
  79. DeleteEdge (N2_frame, N2_IP_old) {
  80. value = "'IP'"
  81. }
  82. CreateEdge (N2_frame, N2_evalstack_C) {
  83. value = "'evalstack'"
  84. }
  85. DeleteEdge (N2_frame, N2_evalstack_M) {
  86. value = "'evalstack'"
  87. }
  88. CreateEdge (N2_frame, N2_IP_new) {
  89. value = "'IP'"
  90. }
  91. CreateEdge (N2_evalstack_C, N2_evalstack_M) {
  92. value = "'prev'"
  93. }
  94. CreateEdge (N2_evalstack_M, N2_phase_new) {
  95. value = "'phase'"
  96. }
  97. CreateEdge (N2_evalstack_M, N2_IP) {
  98. value = "'inst'"
  99. }
  100. MatchEdge (N2_IP, N2_IP_new) {
  101. value = "'var'"
  102. }
  103. }
  104. Rule Assign_Assign_N3 {
  105. Root N3_0 {}
  106. Match N3_1 {
  107. match = True
  108. }
  109. Match N3_2 {
  110. match = True
  111. }
  112. Match N3_3 {
  113. match = True
  114. value = "!assign"
  115. }
  116. Delete N3_4 {
  117. match = True
  118. value = "'assign'"
  119. }
  120. Create N3_5 {
  121. value = "'finish'"
  122. }
  123. Match N3_6 {}
  124. Match N3_7 {}
  125. Match N3_8 {}
  126. MatchEdge (N3_0, N3_1) {
  127. value = "username"
  128. }
  129. MatchEdge (N3_1, N3_2) {
  130. value = "'frame'"
  131. }
  132. MatchEdge (N3_2, N3_3) {
  133. value = "'IP'"
  134. }
  135. DeleteEdge (N3_2, N3_4) {
  136. value = "'phase'"
  137. }
  138. CreateEdge (N3_2, N3_5) {
  139. value = "'phase'"
  140. }
  141. MatchEdge (N3_2, N3_6) {
  142. value = "'returnvalue'"
  143. }
  144. DeleteEdge (N3_2, N3_7) {
  145. value = "'variable'"
  146. }
  147. CreateEdge (N3_7, N3_6) {
  148. value = "'value'"
  149. }
  150. DeleteEdge (N3_7, N3_8) {
  151. value = "'value'"
  152. }
  153. }
  154. Rule Assign_Init_N4 {
  155. Root N4_0 {}
  156. Match N4_1 {
  157. match = True
  158. }
  159. Match N4_2 {
  160. match = True
  161. }
  162. Match N4_3 {
  163. match = True
  164. value = "'init'"
  165. }
  166. Create N4_4 {}
  167. Match N4_5 {}
  168. Match N4_6 {
  169. match = True
  170. value = "!assign"
  171. }
  172. Create N4_7 {
  173. value = "'value'"
  174. }
  175. Match N4_8 {}
  176. MatchEdge (N4_0, N4_1) {
  177. value = "username"
  178. }
  179. MatchEdge (N4_1, N4_2) {
  180. value = "'frame'"
  181. }
  182. MatchEdge (N4_2, N4_3) {
  183. value = "'phase'"
  184. }
  185. DeleteEdge (N4_2, N4_6) {
  186. value = "'IP'"
  187. }
  188. CreateEdge (N4_2, N4_4) {
  189. value = "'evalstack'"
  190. }
  191. DeleteEdge (N4_2, N4_5) {
  192. value = "'evalstack'"
  193. }
  194. CreateEdge (N4_2, N4_8) {
  195. value = "'IP'"
  196. }
  197. CreateEdge (N4_5, N4_6) {
  198. value = "'inst'"
  199. }
  200. CreateEdge (N4_5, N4_7) {
  201. value = "'phase'"
  202. }
  203. MatchEdge (N4_6, N4_8) {
  204. value = "'var'"
  205. }
  206. }
  207. Rule Assign_Value_N5 {
  208. Root N5_0 {}
  209. Match N5_1 {
  210. match = True
  211. }
  212. Match N5_2 {
  213. match = True
  214. }
  215. Match N5_3 {
  216. match = True
  217. value = "'value'"
  218. }
  219. Match N5_4 {
  220. match = True
  221. value = "!assign"
  222. }
  223. Create N5_5 {
  224. match = True
  225. }
  226. Create N5_6 {
  227. value = "'init'"
  228. }
  229. Match N5_7 {}
  230. Match N5_8 {}
  231. Match N5_9 {}
  232. Create N5_10 {
  233. value = "'assign'"
  234. }
  235. MatchEdge (N5_0, N5_1) {
  236. value = "username"
  237. }
  238. MatchEdge (N5_1, N5_2) {
  239. value = "'frame'"
  240. }
  241. DeleteEdge (N5_2, N5_3) {
  242. value = "'phase'"
  243. }
  244. DeleteEdge (N5_2, N5_4) {
  245. value = "'IP'"
  246. }
  247. CreateEdge (N5_2, N5_5) {
  248. value = "'evalstack'"
  249. }
  250. CreateEdge (N5_2, N5_6) {
  251. value = "'phase'"
  252. }
  253. DeleteEdge (N5_2, N5_9) {
  254. value = "'evalstack'"
  255. }
  256. CreateEdge (N5_2, N5_7) {
  257. value = "'IP'"
  258. }
  259. MatchEdge (N5_2, N5_8) {
  260. value = "'returnvalue'"
  261. }
  262. CreateEdge (N5_2, N5_8) {
  263. value = "'variable'"
  264. }
  265. CreateEdge (N5_5, N5_9) {
  266. value = "'prev'"
  267. }
  268. DeleteEdge (N5_5, N5_9) {
  269. value = "'evalstack'"
  270. }
  271. CreateEdge (N5_9, N5_4) {
  272. value = "'inst'"
  273. }
  274. CreateEdge (N5_9, N5_10) {
  275. value = "'phase'"
  276. }
  277. MatchEdge (N5_4, N5_7) {
  278. value = "'value'"
  279. }
  280. }
  281. Rule Break_N6 {
  282. Root N6_0 {}
  283. Match N6_1 {
  284. match = True
  285. }
  286. Match N6_2 {
  287. match = True
  288. }
  289. Delete N6_3 {
  290. value = "'init'"
  291. match = True
  292. }
  293. Create N6_4 {
  294. value = "'finish'"
  295. }
  296. Match N6_5 {
  297. value = "!break"
  298. match = True
  299. }
  300. Match N6_6 {}
  301. MatchEdge (N6_0, N6_1) {
  302. value = "username"
  303. }
  304. MatchEdge (N6_1, N6_2) {
  305. value = "'frame'"
  306. }
  307. DeleteEdge (N6_2, N6_3) {
  308. value = "'phase'"
  309. }
  310. CreateEdge (N6_2, N6_4) {
  311. value = "'phase'"
  312. }
  313. DeleteEdge (N6_2, N6_5) {
  314. value = "'IP'"
  315. }
  316. CreateEdge (N6_2, N6_6) {
  317. value = "'IP'"
  318. }
  319. MatchEdge (N6_5, N6_6) {
  320. value = "'while'"
  321. }
  322. }
  323. Rule Call_Call_None_N7 {
  324. Root N7_0 {}
  325. Match N7_1 {
  326. match = True
  327. }
  328. Create N7_2 {}
  329. Match N7_3 {
  330. match = True
  331. }
  332. Create N7_4 {}
  333. Create N7_5 {}
  334. Create N7_6 {
  335. value = "!call"
  336. }
  337. Create N7_7 {}
  338. Match N7_8 {}
  339. Create N7_9 {
  340. value = "'finish'"
  341. }
  342. Delete N7_10 {
  343. value = "'call'"
  344. match = True
  345. }
  346. NAC N7_11 {}
  347. Match N7_12 {}
  348. Create N7_13 {
  349. value = "'init'"
  350. }
  351. MatchEdge (N7_0, N7_1) {
  352. value = "username"
  353. }
  354. CreateEdge (N7_1, N7_2) {
  355. value = "'frame'"
  356. }
  357. DeleteEdge (N7_1, N7_3) {
  358. value = "'frame'"
  359. }
  360. CreateEdge (N7_2, N7_4) {
  361. value = "'evalstack'"
  362. }
  363. CreateEdge (N7_2, N7_5) {
  364. value = "'symbols'"
  365. }
  366. CreateEdge (N7_2, N7_6) {
  367. value = "'caller'"
  368. }
  369. CreateEdge (N7_2, N7_7) {
  370. value = "'returnvalue'"
  371. }
  372. CreateEdge (N7_2, N7_12) {
  373. value = "'IP'"
  374. }
  375. CreateEdge (N7_2, N7_13) {
  376. value = "'phase'"
  377. }
  378. NACEdge (N7_6, N7_11) {
  379. value = "'last_param'"
  380. }
  381. CreateEdge (N7_2, N7_3) {
  382. value = "'prev'"
  383. }
  384. MatchEdge (N7_3, N7_6) {
  385. value = "'IP'"
  386. }
  387. MatchEdge (N7_3, N7_8) {
  388. value = "'returnvalue'"
  389. }
  390. CreateEdge (N7_3, N7_9) {
  391. value = "'phase'"
  392. }
  393. DeleteEdge (N7_3, N7_10) {
  394. value = "'phase'"
  395. }
  396. MatchEdge (N7_8, N7_12) {
  397. value = "'body'"
  398. }
  399. }
  400. Rule Call_Call_Params_N8 {
  401. Root N8_0 {}
  402. Match N8_1 {
  403. match = True
  404. }
  405. Match N8_2 {}
  406. Match N8_3 {}
  407. Match N8_4 {
  408. value = "!call"
  409. }
  410. Match N8_5 {}
  411. Match N8_6 {
  412. value = "a"
  413. match = True
  414. }
  415. Create N8_7 {
  416. value = "'finish'"
  417. }
  418. Match N8_8 {}
  419. Match N8_9 {}
  420. Create N8_10 {}
  421. Match N8_11 {}
  422. Match N8_12 {}
  423. Match N8_13 {}
  424. Delete N8_14 {
  425. value = "'call'"
  426. }
  427. Match N8_15 {}
  428. Create N8_16 {}
  429. MatchEdge (N8_0, N8_1) {
  430. value = "username"
  431. }
  432. CreateEdge (N8_1, N8_2) {
  433. value = "'frame'"
  434. }
  435. DeleteEdge (N8_1, N8_3) {
  436. value = "'frame'"
  437. }
  438. MatchEdge (N8_2, N8_4) {
  439. value = "'caller'"
  440. }
  441. MatchEdge (N8_2, N8_3) {
  442. value = "'prev'"
  443. }
  444. MatchEdge (N8_2, N8_15) {
  445. value = "'symbols'"
  446. }
  447. MatchEdge (N8_2, N8_13) {
  448. value = "'IP'"
  449. }
  450. MatchEdge (N8_3, N8_4) {
  451. value = "!call"
  452. }
  453. CreateEdge (N8_3, N8_7) {
  454. value = "'finish'"
  455. }
  456. MatchEdge (N8_3, N8_8) {
  457. value = "'returnvalue'"
  458. }
  459. DeleteEdge (N8_3, N8_14) {
  460. value = "'phase'"
  461. }
  462. MatchEdge (N8_4, N8_5) {
  463. value = "'last_param'"
  464. }
  465. MatchEdge (N8_5, N8_6) {
  466. value = "'name'"
  467. }
  468. CreateEdge (N8_10, N8_8) {
  469. value = "'value'"
  470. }
  471. MatchEdge (N8_11, N8_9) {
  472. value = "a"
  473. }
  474. MatchEdge (N8_12, N8_13) {
  475. value = "'body'"
  476. }
  477. MatchEdge (N8_12, N8_11) {
  478. value = "'params'"
  479. }
  480. CreateEdge (N8_15, N8_16) {}
  481. CreateEdge (N8_16, N8_9) {}
  482. CreateEdge (N8_16, N8_10) {}
  483. }
  484. Rule Call_Params_First_Multi_N9 {
  485. }
  486. Rule If_False_N21 {
  487. Root N21_root {}
  488. Match N21_userroot {
  489. match = True
  490. }
  491. Match N21_frame {
  492. match = True
  493. }
  494. Delete N21_phase_D {
  495. value = "'cond'"
  496. match = True
  497. }
  498. Create N21_phase_C {
  499. value = "'finish'"
  500. }
  501. Match N21_IP {
  502. value = "!if"
  503. match = True
  504. }
  505. Match N21_RV {
  506. value = "False"
  507. match = True
  508. }
  509. NAC N21_else {}
  510. MatchEdge (N21_root, N21_userroot) {
  511. value = "username"
  512. }
  513. MatchEdge (N21_userroot, N21_frame) {
  514. value = "'frame'"
  515. }
  516. MatchEdge (N21_frame, N21_IP) {
  517. value = "'IP'"
  518. }
  519. MatchEdge (N21_frame, N21_RV) {
  520. value = "'returnvalue'"
  521. }
  522. DeleteEdge (N21_frame, N21_phase_D) {
  523. value = "'phase'"
  524. }
  525. CreateEdge (N21_frame, N21_phase_C) {
  526. value = "'phase'"
  527. }
  528. NACEdge (N21_IP, N21_else) {
  529. value = "'else'"
  530. }
  531. }