MvK_rules.mvc 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492
  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. value = "!while"
  302. }
  303. MatchEdge (N6_0, N6_1) {
  304. value = "username"
  305. }
  306. MatchEdge (N6_1, N6_2) {
  307. value = "'frame'"
  308. }
  309. DeleteEdge (N6_2, N6_3) {
  310. value = "'phase'"
  311. }
  312. CreateEdge (N6_2, N6_4) {
  313. value = "'phase'"
  314. }
  315. DeleteEdge (N6_2, N6_5) {
  316. value = "'IP'"
  317. }
  318. CreateEdge (N6_2, N6_6) {
  319. value = "'IP'"
  320. }
  321. MatchEdge (N6_5, N6_6) {
  322. value = "'while'"
  323. }
  324. }
  325. Rule Call_Call_None_N7 {
  326. Root N7_0 {}
  327. Match N7_1 {
  328. match = True
  329. }
  330. Create N7_2 {}
  331. Match N7_3 {
  332. match = True
  333. }
  334. Create N7_4 {}
  335. Create N7_5 {}
  336. Create N7_6 {
  337. value = "!call"
  338. }
  339. Create N7_7 {}
  340. Match N7_8 {}
  341. Create N7_9 {
  342. value = "'finish'"
  343. }
  344. Delete N7_10 {
  345. value = "'call'"
  346. match = True
  347. }
  348. NAC N7_11 {}
  349. Match N7_12 {}
  350. Create N7_13 {
  351. value = "'init'"
  352. }
  353. MatchEdge (N7_0, N7_1) {
  354. value = "username"
  355. }
  356. CreateEdge (N7_1, N7_2) {
  357. value = "'frame'"
  358. }
  359. DeleteEdge (N7_1, N7_3) {
  360. value = "'frame'"
  361. }
  362. CreateEdge (N7_2, N7_4) {
  363. value = "'evalstack'"
  364. }
  365. CreateEdge (N7_2, N7_5) {
  366. value = "'symbols'"
  367. }
  368. CreateEdge (N7_2, N7_6) {
  369. value = "'caller'"
  370. }
  371. CreateEdge (N7_2, N7_7) {
  372. value = "'returnvalue'"
  373. }
  374. CreateEdge (N7_2, N7_12) {
  375. value = "'IP'"
  376. }
  377. CreateEdge (N7_2, N7_13) {
  378. value = "'phase'"
  379. }
  380. NACEdge (N7_6, N7_11) {
  381. value = "'last_param'"
  382. }
  383. CreateEdge (N7_2, N7_3) {
  384. value = "'prev'"
  385. }
  386. MatchEdge (N7_3, N7_6) {
  387. value = "'IP'"
  388. }
  389. MatchEdge (N7_3, N7_8) {
  390. value = "'returnvalue'"
  391. }
  392. CreateEdge (N7_3, N7_9) {
  393. value = "'phase'"
  394. }
  395. DeleteEdge (N7_3, N7_10) {
  396. value = "'phase'"
  397. }
  398. MatchEdge (N7_8, N7_12) {
  399. value = "'body'"
  400. }
  401. }
  402. Rule Call_Call_Params_N8 {
  403. Root N8_0 {}
  404. Match N8_1 {
  405. match = True
  406. }
  407. Match N8_2 {}
  408. Match N8_3 {}
  409. Match N8_4 {
  410. value = "!call"
  411. }
  412. Match N8_5 {}
  413. Match N8_6 {
  414. value = "a"
  415. match = True
  416. }
  417. Create N8_7 {
  418. value = "'finish'"
  419. }
  420. Match N8_8 {}
  421. Match N8_9 {}
  422. Create N8_10 {}
  423. Match N8_11 {}
  424. Match N8_12 {}
  425. Match N8_13 {}
  426. Delete N8_14 {
  427. value = "'call'"
  428. }
  429. Match N8_15 {}
  430. MatchEdge (N8_0, N8_1) {
  431. value = "username"
  432. }
  433. CreateEdge (N8_1, N8_2) {
  434. value = "'frame'"
  435. }
  436. DeleteEdge (N8_1, N8_3) {
  437. value = "'frame'"
  438. }
  439. MatchEdge (N8_2, N8_4) {
  440. value = "'caller'"
  441. }
  442. MatchEdge (N8_2, N8_3) {
  443. value = "'prev'"
  444. }
  445. MatchEdge (N8_2, N8_15) {
  446. value = "'symbols'"
  447. }
  448. MatchEdge (N8_2, N8_13) {
  449. value = "'IP'"
  450. }
  451. MatchEdge (N8_3, N8_4) {
  452. value = "!call"
  453. }
  454. CreateEdge (N8_3, N8_7) {
  455. value = "'finish'"
  456. }
  457. MatchEdge (N8_3, N8_8) {
  458. value = "'returnvalue'"
  459. }
  460. DeleteEdge (N8_3, N8_14) {
  461. value = "'phase'"
  462. }
  463. MatchEdge (N8_4, N8_5) {
  464. value = "'last_param'"
  465. }
  466. MatchEdge (N8_5, N8_6) {
  467. value = "'name'"
  468. }
  469. CreateEdge (N8_10, N8_8) {
  470. value = "'value'"
  471. }
  472. MatchEdge (N8_11, N8_9) {
  473. value = "a"
  474. }
  475. MatchEdge (N8_12, N8_13) {
  476. value = "'body'"
  477. }
  478. MatchEdge (N8_12, N8_11) {
  479. value = "'params'"
  480. }
  481. CreateEdge N8_16 (N8_15, N8_10) {}
  482. CreateEdge (N8_16, N8_9) {}
  483. }
  484. Rule Call_Params_First_Multi_N9 {
  485. Root N9_0 {}
  486. Match N9_1 {
  487. match = True
  488. }
  489. Match N9_2 {
  490. match = True
  491. ]
  492. Create N9_3 {}
  493. Create N9_4 {
  494. value = "'init'"
  495. }
  496. Create N9_5 {}
  497. Create N9_6 {}
  498. Create N9_7 {}
  499. Match N9_8 {}
  500. Match N9_9 {}
  501. Match N9_10 {}
  502. Create N9_11 {
  503. value = "'init'"
  504. }
  505. Create N9_12 {}
  506. Match N9_13 {}
  507. Match N9_14 {
  508. value = "!call"
  509. match = True
  510. }
  511. Match N9_15 {}
  512. Match N9_16 {}
  513. Match N9_17 {}
  514. MatchEdge (N9_0, N9_1) {
  515. value = "username"
  516. }
  517. MatchEdge (N9_1, N9_2) {
  518. value = "'frame'"
  519. }
  520. DeleteEdge (N9_2, N9_13) {
  521. value = "'evalstack'"
  522. }
  523. DeleteEdge (N9_2, N9_14) {
  524. value = "'IP'"
  525. }
  526. CreateEdge (N9_2, N9_11) {
  527. value = "'init'"
  528. }
  529. DeleteEdge (N9_2, N9_15) {
  530. value = "'phase'"
  531. }
  532. MatchEdge (N9_2, N9_10) {
  533. value = "'returnvalue'"
  534. }
  535. CreateEdge (N9_2, N9_17) {
  536. value = "'IP'"
  537. }
  538. CreateEdge (N9_3, N9_14) {
  539. value = "'caller'"
  540. }
  541. CreateEdge (N9_3, N9_2) {
  542. value = "'prev'"
  543. }
  544. CreateEdge (N9_3, N9_4) {
  545. value = "'phase'"
  546. }
  547. CreateEdge (N9_3, N9_5) {
  548. value = "'evalstack'"
  549. }
  550. CreateEdge (N9_3, N9_6) {
  551. value = "'symbols'"
  552. }
  553. CreateEdge (N9_3, N9_7) {
  554. value = "'returnvalue'"
  555. }
  556. CreateEdge (N9_3, N9_8) {
  557. value = "'IP'"
  558. }
  559. MatchEdge (N9_10, N9_9) {
  560. value = "'params'"
  561. }
  562. MatchEdge (N9_10, N9_8) {
  563. value = "'body'"
  564. }
  565. CreateEdge (N9_12, N9_13) {
  566. value = "'prev'"
  567. }
  568. CreateEdge (N9_13, N9_14) {
  569. value = "'inst'"
  570. }
  571. MatchEdge (N9_14, N9_15) {
  572. value = "'params'"
  573. }
  574. MatchEdge (N9_15, N9_16) {
  575. value = "'next_param'"
  576. }
  577. MatchEdge (N9_15, N9_17) {
  578. value = "'value'"
  579. }
  580. }
  581. Rule Call_Params_First_Single_N10 {
  582. Root N10_0 {}
  583. Match N10_1 {
  584. match = True
  585. }
  586. Match N10_2 {
  587. match = True
  588. }
  589. Create N10_3 {}
  590. Create N10_4 {
  591. value = "'init'"
  592. }
  593. Create N10_5 {}
  594. Create N10_6 {}
  595. Create N10_7 {}
  596. Match N10_8 {}
  597. Create N10_9 {
  598. value = "'init'"
  599. }
  600. Match N10_10 {}
  601. Match N10_11 {}
  602. Match N10_12 {}
  603. Create N10_13 {
  604. value = "'call'"
  605. }
  606. Match N10_14 {
  607. value = "!call"
  608. }
  609. Match N10_15 {}
  610. Match N10_16 {}
  611. Create N10_17 {}
  612. MatchEdge (N10_0, N10_1) {
  613. value = "username"
  614. }
  615. MatchEdge (N10_1, N10_2) {
  616. value = "'frame'"
  617. }
  618. CreateEdge (N10_2, N10_16) {
  619. value = "'IP'"
  620. }
  621. CreateEdge (N10_2, N10_9) {
  622. value = "'phase'"
  623. }
  624. MatchEdge (N10_2, N10_10) {
  625. value = "'returnvalue'"
  626. }
  627. DeleteEdge (N10_2, N10_12) {
  628. value = "'evalstack'"
  629. }
  630. CreateEdge (N10_2, N10_17) {
  631. value = "'evalstack'"
  632. }
  633. DeleteEdge (N10_2, N10_14) {
  634. value = "'IP'"
  635. }
  636. DeleteEdge (N10_2, N10_15) {
  637. value = "'phase'"
  638. }
  639. CreateEdge (N10_3, N10_4) {
  640. value = "'phase'"
  641. }
  642. CreateEdge (N10_3, N10_5) {
  643. value = "'evalstack'"
  644. }
  645. CreateEdge (N10_3, N10_6) {
  646. value = "'symbols'"
  647. }
  648. CreateEdge (N10_3, N10_7) {
  649. value = "'returnvalue'"
  650. }
  651. MatchEdge (N10_10, N10_8) {
  652. value = "'body'"
  653. }
  654. MatchEdge (N10_10, N10_11) {
  655. value = "'params'"
  656. }
  657. CreateEdge (N10_12, N10_13) {
  658. value = "'phase'"
  659. }
  660. CreateEdge (N10_12, N10_14) {
  661. value = "'inst'"
  662. }
  663. MatchEdge (N10_14, N10_15) {
  664. value = "'params'"
  665. }
  666. MatchEdge (N10_14, N10_15) {
  667. value = "'last_param'"
  668. }
  669. MatchEdge (N10_15, N10_16) {
  670. value = "'value'"
  671. }
  672. CreateEdge (N10_17, N10_12) {
  673. value = "'prev'"
  674. }
  675. }
  676. Rule Call_Params_Last_N11 {
  677. Root N11_0 {}
  678. Match N11_1 {
  679. match = True
  680. }
  681. Match N11_2 {
  682. match = True
  683. }
  684. Match N11_3 {}
  685. Match N11_4 {}
  686. Match N11_5 {}
  687. Match N11_6 {}
  688. Match N11_7 {}
  689. Create N11_9 {}
  690. Match N11_10 {}
  691. Match N11_11 {}
  692. Match N11_12 {
  693. value = "a"
  694. }
  695. Match N11_13 {}
  696. Match N11_14 {}
  697. Create N11_15 {
  698. value = "'call'"
  699. }
  700. Match N11_16 {
  701. value = "!call"
  702. }
  703. Match N11_17 {}
  704. Create N11_18 {}
  705. Create N11_19 {
  706. value = "'init'"
  707. }
  708. Match N11_20 {}
  709. MatchEdge (N11_0, N11_1) {
  710. value = "username"
  711. }
  712. MatchEdge (N11_1, N11_2) {
  713. value = "'frame'"
  714. }
  715. DeleteEdge (N11_2, N11_16) {
  716. value = "'IP'"
  717. }
  718. DeleteEdge (N11_2, N11_17) {
  719. value = "'evalstack'"
  720. }
  721. CreateEdge (N11_2, N11_18) {
  722. value = "'evalstack'"
  723. }
  724. CreateEdge (N11_2, N11_19) {
  725. value = "'phase'"
  726. }
  727. DeleteEdge (N11_2, N11_14) {
  728. value = "'phase'"
  729. }
  730. MatchEdge (N11_2, N11_10) {
  731. value = "'returnvalue'"
  732. }
  733. CreateEdge (N11_2, N11_13) {
  734. value = "'IP'"
  735. }
  736. MatchEdge (N11_3, N11_16) {
  737. value = "'caller'"
  738. }
  739. MatchEdge (N11_3, N11_2) {
  740. value = "'prev'"
  741. }
  742. MatchEdge (N11_3, N11_20) {
  743. value = "'symbols'"
  744. }
  745. MatchEdge (N11_3, N11_5) {
  746. value = "'IP'"
  747. }
  748. MatchEdge (N11_4, N11_5) {
  749. value = "'body'"
  750. }
  751. MatchEdge (N11_4, N11_6) {
  752. value = "'params'"
  753. }
  754. MatchEdge (N11_6, N11_7) {
  755. value = "a"
  756. }
  757. CreateEdge (N11_9, N11_10) {
  758. value = "'value'"
  759. }
  760. MatchEdge (N11_11, N11_14) {
  761. value = "'next_param'"
  762. }
  763. MatchEdge (N11_11, N11_12) {
  764. value = "'name'"
  765. }
  766. MatchEdge (N11_14, N11_13) {
  767. value = "'value'"
  768. }
  769. MatchEdge (N11_16, N11_14) {
  770. value = "'last_param'"
  771. }
  772. CreateEdge (N11_17, N11_16) {
  773. value = "'inst'"
  774. }
  775. CreateEdge (N11_17, N11_15) {
  776. value = "'phase'"
  777. }
  778. CreateEdge (N11_18, N11_17) {
  779. value = "'prev'"
  780. }
  781. CreateEdge N11_8 (N11_20, N11_9) {}
  782. CreateEdge (N11_8, N11_7) {}
  783. }
  784. Rule Call_Params_Next_N12 {
  785. Root N12_0 {}
  786. Match N12_1 {}
  787. Match N12_2 {}
  788. Match N12_3 {}
  789. Match N12_4 {}
  790. Match N12_5 {}
  791. Match N12_6 {}
  792. Match N12_7 {}
  793. Create N12_9 {}
  794. Match N12_10 {}
  795. Match N12_11 {}
  796. Match N12_12 {}
  797. Match N12_13 {}
  798. Match N12_14 {
  799. value = "a"
  800. }
  801. Create N12_15 {}
  802. Match N12_16 {}
  803. Match N12_17 {}
  804. Match N12_18 {}
  805. Match N12_19 {
  806. value = "!call"
  807. }
  808. Create N12_20 {
  809. value = "'init'"
  810. }
  811. MatchEdge (N12_0, N12_1) {
  812. value = "username"
  813. }
  814. MatchEdge (N12_1, N12_2) {
  815. value = "'frame'"
  816. }
  817. MatchEdge (N12_2, N12_10) {
  818. value = "'returnvalue'"
  819. }
  820. DeleteEdge (N12_2, N12_11) {
  821. value = "'phase'"
  822. }
  823. DeleteEdge (N12_2, N12_17) {
  824. value = "'evalstack'"
  825. }
  826. CreateEdge (N12_2, N12_15) {
  827. value = "'evalstack'"
  828. }
  829. CreateEdge (N12_2, N12_16) {
  830. value = "'IP'"
  831. }
  832. DeleteEdge (N12_2, N12_19) {
  833. value = "'IP'"
  834. }
  835. CreateEdge (N12_2, N12_20) {
  836. value = "'phase'"
  837. }
  838. MatchEdge (N12_3, N12_5) {
  839. value = "'IP'"
  840. }
  841. MatchEdge (N12_3, N12_13) {
  842. value = "'symbols'"
  843. }
  844. MatchEdge (N12_3, N12_2) {
  845. value = "'prev'"
  846. }
  847. MatchEdge (N12_3, N12_19) {
  848. value = "'caller'"
  849. }
  850. MatchEdge (N12_4, N12_6) {
  851. value = "'params'"
  852. }
  853. MatchEdge (N12_4, N12_5) {
  854. value = "'body'"
  855. }
  856. MatchEdge (N12_6, N12_7) {
  857. value = "a"
  858. }
  859. CreateEdge (N12_9, N12_10) {
  860. value = "'value'"
  861. }
  862. MatchEdge (N12_11, N12_18) {
  863. value = "'next_param'"
  864. }
  865. MatchEdge (N12_11, N12_16) {
  866. value = "'value'"
  867. }
  868. MatchEdge (N12_12, N12_14) {
  869. value = "'name'"
  870. }
  871. MatchEdge (N12_12, N12_11) {
  872. value = "'next_param'"
  873. }
  874. CreateEdge (N12_15, N12_17) {
  875. value = "'prev'"
  876. }
  877. CreateEdge (N12_17, N12_18) {
  878. value = "'phase'"
  879. }
  880. CreateEdge (N12_17, N12_19) {
  881. value = "'inst'"
  882. }
  883. CreateEdge N12_8 (N12_13, N12_9) {}
  884. CreateEdge (N12_8, N12_7) {}
  885. }
  886. Rule Call_Resolve_No_Params_N13 {
  887. Root N13_0 {}
  888. Match N13_1 {}
  889. Match N13_2 {}
  890. Match N13_3 {
  891. value = "'init'"
  892. }
  893. Create N13_4 {}
  894. Match N13_5 {}
  895. Match N13_6 {
  896. value = "!call"
  897. }
  898. Create N13_7 {
  899. value = "'call'"
  900. }
  901. Match N13_8 {}
  902. NAC N13_9 {}
  903. MatchEdge (N13_0, N13_1) {
  904. value = "username"
  905. }
  906. MatchEdge (N13_1, N13_2) {
  907. value = "'frame'"
  908. }
  909. DeleteEdge (N13_2, N13_6) {
  910. value = "'IP'"
  911. }
  912. MatchEdge (N13_2, N13_3) {
  913. value = "'phase'"
  914. }
  915. CreateEdge (N13_2, N13_4) {
  916. value = "'evalstack'"
  917. }
  918. DeleteEdge (N13_2, N13_5) {
  919. value = "'evalstack'"
  920. }
  921. CreateEdge (N13_2, N13_8) {
  922. value = "'IP'"
  923. }
  924. CreateEdge (N13_4, N13_5) {
  925. value = "'prev'"
  926. }
  927. CreateEdge (N13_5, N13_6) {
  928. value = "'inst'"
  929. }
  930. CreateEdge (N13_5, N13_7) {
  931. value = "'phase'"
  932. }
  933. NACEdge (N13_6, N13_9) {
  934. value = "'params'"
  935. }
  936. MatchEdge (N13_6, N13_8) {
  937. value = "'func'"
  938. }
  939. }
  940. Rule Call_Resolve_Params_N14 {
  941. Root N14_0 {}
  942. Match N14_1 {}
  943. Match N14_2 {}
  944. Match N14_3 {}
  945. Create N14_4 {}
  946. Match N14_5 {}
  947. Match N14_6 {}
  948. Match N14_7 {
  949. value = "'init'"
  950. }
  951. Match N14_8 {}
  952. MatchEdge (N14_0, N14_1) {
  953. value = "username"
  954. }
  955. MatchEdge (N14_1, N14_2) {
  956. value = "'frame'"
  957. }
  958. DeleteEdge (N14_2, N14_3) {
  959. value = "'evalstack'"
  960. }
  961. CreateEdge (N14_2, N14_4) {
  962. value = "'evalstack'"
  963. }
  964. DeleteEdge (N14_2, N14_5) {
  965. value = "'IP'"
  966. }
  967. CreateEdge (N14_2, N14_6) {
  968. value = "'IP'"
  969. }
  970. MatchEdge (N14_2, N14_7) {
  971. value = "'phase'"
  972. }
  973. CreateEdge (N14_3, N14_8) {
  974. value = "'phase'"
  975. }
  976. CreateEdge (N14_3, N14_5) {
  977. value = "'inst'"
  978. }
  979. CreateEdge (N14_4, N14_3) {
  980. value = "'prev'"
  981. }
  982. MatchEdge (N14_5, N14_8) {
  983. value = "'params'"
  984. }
  985. MatchEdge (N14_5, N14_6) {
  986. value = "'func'"
  987. }
  988. }
  989. Rule Const_N15 {
  990. Root N15_0 {}
  991. Match N15_1 {}
  992. Match N15_2 {}
  993. Match N15_3 {}
  994. Delete N15_4 {
  995. value = "'init'"
  996. }
  997. Create N15_5 {
  998. value = "'finish'"
  999. }
  1000. Match N15_6 {
  1001. value = "!const"
  1002. }
  1003. Match N15_7 {}
  1004. MatchEdge (N15_0, N15_1) {
  1005. value = "username"
  1006. }
  1007. MatchEdge (N15_1, N15_2) {
  1008. value = "'frame'"
  1009. }
  1010. CreateEdge (N15_2, N15_7) {
  1011. value = "'returnvalue'"
  1012. }
  1013. DeleteEdge (N15_2, N15_3) {
  1014. value = "'returnvalue'"
  1015. }
  1016. DeleteEdge (N15_2, N15_4) {
  1017. value = "'phase'"
  1018. }
  1019. CreateEdge (N15_2, N15_5) {
  1020. value = "'phase'"
  1021. }
  1022. MatchEdge (N15_2, N15_6) {
  1023. value = "'IP'"
  1024. }
  1025. MatchEdge (N15_6, N15_7) {
  1026. value = "'node'"
  1027. }
  1028. }
  1029. Rule Continue_N16 {
  1030. Root N16_0 {}
  1031. Match N16_1 {}
  1032. Match N16_2 {}
  1033. Match N16_3 {
  1034. value = "'init'"
  1035. }
  1036. Match N16_4 {
  1037. value = "!continue"
  1038. }
  1039. Match N16_5 {
  1040. value = "!while"
  1041. }
  1042. MatchEdge (N16_0, N16_1) {
  1043. value = "username"
  1044. }
  1045. MatchEdge (N16_1, N16_2) {
  1046. value = "'frame'"
  1047. }
  1048. MatchEdge (N16_2, N16_3) {
  1049. value = "'init'"
  1050. }
  1051. DeleteEdge (N16_2, N16_4) {
  1052. value = "'IP'"
  1053. }
  1054. CreateEdge (N16_2, N16_5) {
  1055. value = "'IP'"
  1056. }
  1057. MatchEdge (N16_4, N16_5) {
  1058. value = "'while'"
  1059. }
  1060. }
  1061. Rule Declare_Init_N17 {
  1062. Root N17_0 {}
  1063. Match N17_1 {}
  1064. Match N17_2 {}
  1065. Delete N17_3 {
  1066. value = "'init'"
  1067. }
  1068. Create N17_4 {
  1069. value = "'finish'"
  1070. }
  1071. Match N17_5 {
  1072. value = "!declare"
  1073. }
  1074. Match N17_6 {}
  1075. Match N17_7 {}
  1076. Create N17_8 {}
  1077. MatchEdge (N17_0, N17_1) {
  1078. value = "username"
  1079. }
  1080. MatchEdge (N17_1, N17_2) {
  1081. value = "'frame'"
  1082. }
  1083. DeleteEdge (N17_2, N17_3) {
  1084. value = "'phase'"
  1085. }
  1086. CreateEdge (N17_2, N17_4) {
  1087. value = "'finish'"
  1088. }
  1089. MatchEdge (N17_2, N17_5) {
  1090. value = "'IP'"
  1091. }
  1092. MatchEdge (N17_2, N17_6) {
  1093. value = "'symbols'"
  1094. }
  1095. MatchEdge (N17_5, N17_7) {
  1096. value = "'var'"
  1097. }
  1098. CreateEdge N17_9 (N17_6, N17_8) {}
  1099. CreateEdge (N17_9, N17_7) {}
  1100. }
  1101. Rule Global_Init_N18 {
  1102. Root N18_0 {}
  1103. Match N18_1 {}
  1104. Match N18_2 {}
  1105. Match N18_3 {}
  1106. Delete N18_4 {
  1107. value = "'init'"
  1108. }
  1109. Create N18_5 {
  1110. value = "'finish'"
  1111. }
  1112. Match N18_6 {
  1113. value = "!global"
  1114. }
  1115. Match N18_7 {}
  1116. Create N18_8 {}
  1117. MatchEdge (N18_0, N18_1) {
  1118. value = "username"
  1119. }
  1120. MatchEdge (N18_1, N18_2) {
  1121. value = "'frame'"
  1122. }
  1123. MatchEdge (N18_1, N18_3) {
  1124. value = "'globals'"
  1125. }
  1126. DeleteEdge (N18_2, N18_4) {
  1127. value = "'phase'"
  1128. }
  1129. CreateEdge (N18_2, N18_5) {
  1130. value = "'finish'"
  1131. }
  1132. MatchEdge (N18_2, N18_6) {
  1133. value = "'IP'"
  1134. }
  1135. MatchEdge (N18_6, N18_7) {
  1136. value = "'var'"
  1137. }
  1138. CreateEdge N18_9 (N18_3, N18_8) {}
  1139. CreateEdge (N18_9, N18_7) {}
  1140. }
  1141. Rule If_Cond_N19 {
  1142. Root N19_0 {}
  1143. Match N19_1 {}
  1144. Match N19_2 {}
  1145. Match N19_3 {
  1146. value = "'init'"
  1147. }
  1148. Create N19_4 {}
  1149. Match N19_5 {}
  1150. Match N19_6 {
  1151. value = "!if"
  1152. }
  1153. Create N19_7 {
  1154. value = "'cond'"
  1155. }
  1156. Match N19_8 {}
  1157. MatchEdge (N19_0, N19_1) {
  1158. value = "username"
  1159. }
  1160. MatchEdge (N19_1, N19_2) {
  1161. value = "'frame'"
  1162. }
  1163. MatchEdge (N19_2, N19_3) {
  1164. value = "'phase'"
  1165. }
  1166. DeleteEdge (N19_2, N19_6) {
  1167. value = "'IP'"
  1168. }
  1169. CreateEdge (N19_2, N19_4) {
  1170. value = "'evalstack'"
  1171. }
  1172. DeleteEdge (N19_2, N19_5) {
  1173. value = "'evalstack'"
  1174. }
  1175. CreateEdge (N19_2, N19_8) {
  1176. value = "'IP'"
  1177. }
  1178. CreateEdge (N19_4, N19_5) {
  1179. value = "'prev'"
  1180. }
  1181. CreateEdge (N19_5, N19_6) {
  1182. value = "'inst'"
  1183. }
  1184. CreateEdge (N19_5, N19_7) {
  1185. value = "'phase'"
  1186. }
  1187. MatchEdge (N19_6, N19_8) {
  1188. value = "'cond'"
  1189. }
  1190. }
  1191. Rule If_False_Else_N20 {
  1192. Root N20_0 {}
  1193. Match N20_1 {}
  1194. Match N20_2 {}
  1195. Match N20_3 {
  1196. value = "'cond'"
  1197. }
  1198. Match N20_4 {
  1199. value = "!if"
  1200. }
  1201. Create N20_5 {}
  1202. Match N20_6 {
  1203. value = "False"
  1204. match = True
  1205. }
  1206. Create N20_7 {
  1207. value = "'init'"
  1208. }
  1209. Match N20_8 {}
  1210. Match N20_9 {}
  1211. Create N20_10 {
  1212. value = "'finish'"
  1213. }
  1214. MatchEdge (N20_0, N20_1) {
  1215. value = "username"
  1216. }
  1217. MatchEdge (N20_1, N20_2) {
  1218. value = "'frame'"
  1219. }
  1220. DeleteEdge (N20_2, N20_3) {
  1221. value = "'phase'"
  1222. }
  1223. DeleteEdge (N20_2, N20_4) {
  1224. value = "'IP'"
  1225. }
  1226. CreateEdge (N20_2, N20_5) {
  1227. value = "'evalstack'"
  1228. }
  1229. MatchEdge (N20_2, N20_6) {
  1230. value = "'returnvalue'"
  1231. }
  1232. CreateEdge (N20_2, N20_7) {
  1233. value = "'phase'"
  1234. }
  1235. DeleteEdge (N20_2, N20_9) {
  1236. value = "'evalstack'"
  1237. }
  1238. CreateEdge (N20_2, N20_8) {
  1239. value = "'IP'"
  1240. }
  1241. MatchEdge (N20_4, N20_8) {
  1242. value = "'else'"
  1243. }
  1244. CreateEdge (N20_5, N20_9) {
  1245. value = "'prev'"
  1246. }
  1247. CreateEdge (N20_9, N20_4) {
  1248. value = "'inst'"
  1249. }
  1250. CreateEdge (N20_9, N20_10) {
  1251. value = "'phase'"
  1252. }
  1253. }
  1254. Rule If_False_None_N21 {
  1255. Root N21_root {}
  1256. Match N21_userroot {
  1257. match = True
  1258. }
  1259. Match N21_frame {
  1260. match = True
  1261. }
  1262. Delete N21_phase_D {
  1263. value = "'cond'"
  1264. match = True
  1265. }
  1266. Create N21_phase_C {
  1267. value = "'finish'"
  1268. }
  1269. Match N21_IP {
  1270. value = "!if"
  1271. match = True
  1272. }
  1273. Match N21_RV {
  1274. value = "False"
  1275. match = True
  1276. }
  1277. NAC N21_else {}
  1278. MatchEdge (N21_root, N21_userroot) {
  1279. value = "username"
  1280. }
  1281. MatchEdge (N21_userroot, N21_frame) {
  1282. value = "'frame'"
  1283. }
  1284. MatchEdge (N21_frame, N21_IP) {
  1285. value = "'IP'"
  1286. }
  1287. MatchEdge (N21_frame, N21_RV) {
  1288. value = "'returnvalue'"
  1289. }
  1290. DeleteEdge (N21_frame, N21_phase_D) {
  1291. value = "'phase'"
  1292. }
  1293. CreateEdge (N21_frame, N21_phase_C) {
  1294. value = "'phase'"
  1295. }
  1296. NACEdge (N21_IP, N21_else) {
  1297. value = "'else'"
  1298. }
  1299. }
  1300. Rule If_True_N22 {
  1301. Root N22_0 {}
  1302. Match N22_1 {}
  1303. Match N22_2 {}
  1304. Delete N22_3 {
  1305. value = "'cond'"
  1306. }
  1307. Create N22_4 {}
  1308. Create N22_5 {
  1309. value = "'init'"
  1310. }
  1311. Match N22_6 {
  1312. value = "True"
  1313. }
  1314. Match N22_7 {}
  1315. Match N22_8 {}
  1316. Match N22_9 {
  1317. value = "!if"
  1318. }
  1319. Create N22_10 {
  1320. value = "'finish'"
  1321. }
  1322. MatchEdge (N22_0, N22_1) {
  1323. value = "username"
  1324. }
  1325. MatchEdge (N22_1, N22_2) {
  1326. value = "'frame'"
  1327. }
  1328. DeleteEdge (N22_2, N22_3) {
  1329. value = "'phase'"
  1330. }
  1331. DeleteEdge (N22_2, N22_9) {
  1332. value = "'IP'"
  1333. }
  1334. CreateEdge (N22_2, N22_4) {
  1335. value = "'evalstack'"
  1336. }
  1337. CreateEdge (N22_2, N22_5) {
  1338. value = "'phase'"
  1339. }
  1340. MatchEdge (N22_2, N22_6) {
  1341. value = "True"
  1342. }
  1343. DeleteEdge (N22_2, N22_7) {
  1344. value = "'evalstack'"
  1345. }
  1346. CreateEdge (N22_2, N22_8) {
  1347. value = "'IP'"
  1348. }
  1349. CreateEdge (N22_7, N22_9) {
  1350. value = "'inst'"
  1351. }
  1352. CreateEdge (N22_7, N22_10) {
  1353. value = "'phase'"
  1354. }
  1355. MatchEdge (N22_9, N22_8) {
  1356. value = "'then'"
  1357. }
  1358. }
  1359. Rule Next_Next_N24 {
  1360. Root N24_0 {}
  1361. Match N24_1 {}
  1362. Match N24_2 {}
  1363. Delete N24_3 {
  1364. value = "'finish'"
  1365. }
  1366. Create N24_4 {
  1367. value = "'init'"
  1368. }
  1369. Match N24_5 {}
  1370. Match N24_6 {}
  1371. MatchEdge (N24_0, N24_1) {
  1372. value = "username"
  1373. }
  1374. MatchEdge (N24_1, N24_2) {
  1375. value = "'frame'"
  1376. }
  1377. DeleteEdge (N24_2, N24_3) {
  1378. value = "'phase'"
  1379. }
  1380. CreateEdge (N24_2, N24_4) {
  1381. value = "'phase'"
  1382. }
  1383. DeleteEdge (N24_2, N24_5) {
  1384. value = "'IP'"
  1385. }
  1386. CreateEdge (N24_2, N24_6) {
  1387. value = "'IP'"
  1388. }
  1389. MatchEdge (N24_5, N24_6) {
  1390. value = "'next'"
  1391. }
  1392. }
  1393. Rule Next_NoNext_N25 {
  1394. Root N25_0 {}
  1395. Match N25_1 {}
  1396. Match N25_2 {}
  1397. Delete N25_3 {
  1398. value = "'finish'"
  1399. }
  1400. Match N25_4 {
  1401. value = "'IP'"
  1402. }
  1403. Match N25_5 {}
  1404. Delete N25_6 {}
  1405. Match N25_7 {}
  1406. Match N25_8 {}
  1407. NAC N25_9 {}
  1408. MatchEdge (N25_0, N25_1) {
  1409. value = "username"
  1410. }
  1411. MatchEdge (N25_1, N25_2) {
  1412. value = "'frame'"
  1413. }
  1414. DeleteEdge (N25_2, N25_3) {
  1415. value = "'phase'"
  1416. }
  1417. DeleteEdge (N25_2, N25_4) {
  1418. value = "'IP'"
  1419. }
  1420. CreateEdge (N25_2, N25_5) {
  1421. value = "'IP'"
  1422. }
  1423. DeleteEdge (N25_2, N25_6) {
  1424. value = "'evalstack'"
  1425. }
  1426. CreateEdge (N25_2, N25_7) {
  1427. value = "'evalstack'"
  1428. }
  1429. CreateEdge (N25_2, N25_8) {
  1430. value = "'phase'"
  1431. }
  1432. DeleteEdge (N25_6, N25_7) {
  1433. value = "'prev'"
  1434. }
  1435. DeleteEdge (N25_7, N25_5) {
  1436. value = "'inst'"
  1437. }
  1438. DeleteEdge (N25_7, N25_8) {
  1439. value = "'phase'"
  1440. }
  1441. NACEdge (N25_4, N25_9) {
  1442. value = "'next'"
  1443. }
  1444. }