fork download
  1. #!/usr/bin/perl6
  2.  
  3. # nnnnnnnnnnnnnnnn
  4.  
  5. my $origRwcode= ''; my $lastRwcode= ''; my $lastRwcodeDef= '';
  6.  
  7. $origRwcode=
  8. '
  9. jumpTo
  10. <:0:TelService>
  11. [1__CODES
  12. (@@8
  13. ( proc :TelService :0 {::: @@3 :CallSession:Stmt1:Stmt2 :::} )
  14. ( proc :CallSession :4
  15. : {:::
  16. : : jumpTo
  17. : : ( stepThru1 ( cTerm2 :~2 :~3 [PerEvntActnList] ) <:0:TelService> )
  18. : : [ ~1 ]
  19. : : ( cTerm2 :~2 :~3 [NxtStateMap] )
  20. : :::}
  21. )
  22. ( term [cTerm2 :onhook [dialDigit:4] [PerEvntActnList]] [say(concat:hello[,][ ]:World)] )
  23. ( term [cTerm2 :offhook :dialDigit6 [PerEvntActnList]] [say(concat:lets[ ]:talk)] )
  24. ( term [cTerm2 :talking [dialDigit:8] [PerEvntActnList]] [say(concat:seeya[,][ ]:bye)] )
  25. ( term [cTerm2 :onhook [dialDigit:4] [NxtStateMap]] :offhook )
  26. ( term [cTerm2 :offhook :dialDigit6 [NxtStateMap]] :talking )
  27. ( term [cTerm2 :talking [dialDigit:8] [NxtStateMap]] :disconnect )
  28. ) ]
  29. [2__CURSTATE :onhook ]
  30. [3__EVENT [dialDigit:4] ]
  31.  
  32. :dialDigit6
  33. [dialDigit:8]
  34. ';
  35. #[ jumpTo <:0:TelService> ]
  36. #( jumpTo::=1={::: stepBy ( tSubstn ( ~0:x1 (concat:x(~0:x0)) ( ~0 :x1) ) ) :::} )
  37.  
  38. my $setup= 1;
  39. my $stopredOP= ''; my $stopredWhileMin= 0; my $stopredWhileMax= 0; my @stopredWFEcompArgList= Nil;
  40. my %*TERMS{Any}; my %*VARS{Any}; my %*VAR{Any}; my %*PROCS{Any}; my %*PROCSparmNum{Any};
  41. my %*stateROM; my %*actionsROM; my %*AssocListArg0; my %*AssocListArg1;
  42. my %*GOTOARGNAMES{Any};
  43.  
  44. my @savedsr2WFEcompArgList= Nil;my @savedsr2tempLeftBrace= Nil;
  45. my @savedsr2tempRightBrace= Nil;my $savedsr2rewriteArgListElems= 0;
  46.  
  47. my @tempWFEcompArgList= Nil;my @WFEcompArgListSav= Nil;my @tempLeftBraceSav= Nil;
  48. my @tempRightBraceSav= Nil;my $compareMax= 0;my $rewriteArgListElemsSav= 0;
  49. my @WFEcompArgListPreFx= Nil; my @WFEcompArgListSavPreFx= Nil; my $entryWFE4PreFx= '';
  50.  
  51. my $input= ''; my $tp0= ''; my $tp1= ''; my $tp2= ''; my $symbType= ''; my $output= 1; my $saySuccess= 0;
  52. my $addMultSuccess= 0; my @tempStmt= Nil; my $noSkips= 1; my $wrongArgTypes= 0; my @OPstr= Nil; my $OPsav= Nil; my $OPsav2= Nil;
  53. my @OPvariety= Nil; my @entryTempoeName= Nil; my $tempInt= 9999; my $srMax= -1; my @AssocComp0= Nil;
  54. my @AssocComp1= Nil; my @ARGLISTrankForGivenLevelAlreadyInitialized= Nil; my @ARGLISTrankInGivenARGLISTlevel= Nil;
  55. my $BIStemp2= 0; my $BIStemp22= 0; my @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun= Nil;
  56. my @BISlistOfWFErewritesForGivenARGLISTruleRun= Nil; my @BISlistOfWFEbraceTypesForGivenARGLISTruleRun= Nil;
  57. my $BIStempCurWFEbrace= ''; my @curWFEbraceForGivenActnum= Nil; my @isBaseBISlistOfWFEbraceTypesForGivenARGLISTruleRun= Nil;
  58. my $entryWFE= ''; my $entryWFE2= ''; my $entryWFE4= ''; my $entryWFE6= ''; my $entryWFE66= ''; my $entryWFE7= ''; my $actualTemplate= ''; my $tmplateStr= ''; my $tmplateOP= 0;
  59. my $debug= 0; my $debug2= 1; my $debug4= 0;
  60.  
  61. my $englobingNoRWdegree= 0; my $curBrace= ''; my @listOfCurBraces= Nil;
  62. my @BraceTypeOfComponentWFEatGivenIndexInWFElistOfARGLISTatGivenSrLevel= Nil;
  63. my @currentARGLISTlistOfBraceTypesOfComponentWFEs= Nil;
  64. my @currentARGLISTlistOflistOfOPvarietyOfComponentWFEs= Nil;
  65. my $tempLeftBrace= ''; my $tempRightBrace= ''; my @tempLeftBrace= Nil; my @tempRightBrace= Nil;
  66. my @curbraceL= Nil; my @curbraceIdx= Nil; my $ttp= ''; my $tmplateNumOfParms= 0;
  67. my $b12 = ' '; my $i= '|'; my $l= ':'; my $temp1= 'blank'; my $temp2= 0; my $temp4= 0; my $temp6= 0; my $rewriteWFE= '';
  68. my @curWFEbrace= Nil; my @curWFEopVariety= Nil; my $curIdx= 999; my $curIdx2= 999; my $curIdx4= 999; my $sr= 0; my $srw= -1;
  69. my $rewriteArgListElems= 0; my @tempArgList= Nil; my $rewriteArgList= ''; my @WFEcompArgList= Nil; my @WFEcompArgListTemp= Nil;
  70. my @methodStepOfCallingARGLISTrun= Nil; my @WFEcompArgListTemp2= Nil;
  71. my @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun= Nil; my @listOfWFErewritesForGivenARGLISTruleRun= Nil;
  72. my @listOfWFEbraceTypesForGivenARGLISTruleRun= Nil; my @listOfOPvarietyForGivenARGLISTruleRun= Nil;
  73. my @rewriteArgList= Nil; my $stopreduction= 0; my $needNewDescend= 0; my $rwcode= ''; my $match2= ''; my $lastRunNum= -1;
  74. my $runNum= 0; my $continue= 0; my @tmplateList= Nil; my $parmSubstnResult= ''; my @parm= Nil;
  75.  
  76. sub fillRestOfArgsV1($startCurIdx) {
  77. my $curLocal= $startCurIdx;
  78. $stopredOP= $rewriteWFE; $stopredWhileMin= $curLocal; $stopredWhileMax= $rewriteArgListElems;
  79. while $curLocal < $rewriteArgListElems {
  80. @stopredWFEcompArgList[$curLocal]= @WFEcompArgList[$curLocal];
  81. $rewriteWFE= $rewriteWFE ~ '[' ~ @WFEcompArgList[$curLocal] ~ ']';
  82. $curLocal= 1 + $curLocal;
  83. };
  84. };
  85.  
  86. sub trimBrackets(Str $x) {
  87. my $local= $x;
  88. $local= $local.subst( :g , / '@@1(' (.+?) ')[equals]' / , -> $/ { '{' ~ $0 ~ '}[equals]' } );
  89. $local= $local.subst( :g , /^'['([<[a..zA..Z0..9]> | '_' ]+ | \d+)']' / , -> $/ { 'QWWw:' ~ $0 } );
  90. $local= $local.subst( :g , / '['([<[a..zA..Z0..9]> | '_' ]+ | \d+)']' / , -> $/ { ' :' ~ $0 } );
  91. $local= $local.subst( :g , /^('QWWw:') / , -> $/ { ':' } );
  92. $local= $local.subst( :g , / '[@@2 :'([<[a..zA..Z0..9]> | '_' ]+ | \d+)' :'([<[a..zA..Z0..9]> | '_' ]+ | \d+)']' / , -> $/ { '< :' ~ $0 ~ ' :' ~ $1 ~ ' >' } );
  93. $local= $local.subst( :g , / '[~'(\d+)']' / , -> $/ { ' :~' ~ $0 } );
  94. $local= $local.subst( :g , / '[@@2 :'([<[a..zA..Z0..9]> | '_' ]+ | \d+)' :~'(\d+)']' / , -> $/ { '< :' ~ $0 ~ ' :~' ~ $1 ~ ' >' } );
  95. $local= $local.subst( :g , / '[@@2 :~'(\d+)' :'([<[a..zA..Z0..9]> | '_' ]+ | \d+)']' / , -> $/ { '< :~' ~ $0 ~ ' :' ~ $1 ~ ' >' } );
  96. $local= $local.subst( :g , / '[@@2~'(\d+)' :~'(\d+)']' / , -> $/ { '< ~' ~ $0 ~ ' :~' ~ $1 ~ ' >' } );
  97. $local= $local.subst( :g , / '['(\%+)']' / , -> $/ { { '[' ~ "{' ' x$0.chars}" ~ ']' } } );
  98. $local= $local.subst( :g , /^(\%+)$/ , -> $/ { { "{' ' x$0.chars}" } } );
  99. $local= $local.subst( :g , / (''\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) '[' / , -> $/ { $0 ~ $1 ~ $2 ~ ' [' } );
  100. $local= $local.subst( :g , / (''\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) '(' / , -> $/ { $0 ~ $1 ~ $2 ~ ' (' } );
  101. $local= $local.subst( :g , / (''\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) '<' / , -> $/ { $0 ~ $1 ~ $2 ~ ' <' } );
  102. $local= $local.subst( :g , / '< :'(\d+)' :'([<[a..zA..Z0..9]> | '_' ]+ | \d+)' >' / , -> $/ { '<:' ~ $0 ~ ':' ~ $1 ~ '>' } );
  103. $local= $local.subst( :g , / ('subItem[') / , -> $/ { 'subItem [' } );
  104. $local= $local.subst( :g , / ('subItem(') / , -> $/ { 'subItem (' } );
  105. $local= $local.subst( :g , / ('subItem<') / , -> $/ { 'subItem <' } );
  106. $local= $local.subst( :g , / ('subItem:') / , -> $/ { 'subItem :' } );
  107. $local= $local.subst( :g , / ('subVar[') / , -> $/ { 'subVar [' } );
  108. $local= $local.subst( :g , / ('subVar(') / , -> $/ { 'subVar (' } );
  109. $local= $local.subst( :g , / ('subVar<') / , -> $/ { 'subVar <' } );
  110. $local= $local.subst( :g , / ('subVar:') / , -> $/ { 'subVar :' } );
  111. $local= $local.subst( :g , / ('proc[') / , -> $/ { 'proc [' } );
  112. $local= $local.subst( :g , / ('proc(') / , -> $/ { 'proc (' } );
  113. $local= $local.subst( :g , / ('proc<') / , -> $/ { 'proc <' } );
  114. $local= $local.subst( :g , / ('proc:') / , -> $/ { 'proc :' } );
  115. $local= $local.subst( :g , / ('term[') / , -> $/ { 'term [' } );
  116. $local= $local.subst( :g , / ('term(') / , -> $/ { 'term (' } );
  117. $local= $local.subst( :g , / ('term<') / , -> $/ { 'term <' } );
  118. $local= $local.subst( :g , / ('term:') / , -> $/ { 'term :' } );
  119. $local= $local.subst( :g , / 'stepThru'(\d+)'[' / , -> $/ { 'stepThru' ~ $0 ~ ' [' } );
  120. $local= $local.subst( :g , / 'stepThru'(\d+)'(' / , -> $/ { 'stepThru' ~ $0 ~ ' (' } );
  121. $local= $local.subst( :g , / 'stepThru'(\d+)'<' / , -> $/ { 'stepThru' ~ $0 ~ ' <' } );
  122. $local= $local.subst( :g , / 'stepThru'(\d+)':' / , -> $/ { 'stepThru' ~ $0 ~ ' :' } );
  123. $local= $local.subst( :g , / ('(@@')(\d+) / , -> $/ { '( @@' ~ $1 } );
  124. $local= $local.subst( :g , / ('[@@')(\d+) / , -> $/ { '[ @@' ~ $1 } );
  125. $local= $local.subst( :g , / ('[<:::') / , -> $/ { ' {::: ' } );
  126. $local= $local.subst( :g , / (':::>]') / , -> $/ { ' :::}' } );
  127. $local= $local.subst( :g , / ('@@')(\d+)('(') / , -> $/ { $0 ~ $1 ~ ' (' } );
  128. $local= $local.subst( :g , / ('@@')(\d+)('[') / , -> $/ { $0 ~ $1 ~ ' [' } );
  129. $local= $local.subst( :g , / ('@@')(\d+)('<') / , -> $/ { $0 ~ $1 ~ ' <' } );
  130. $local= $local.subst( :g , / (':equals') / , -> $/ { '==' } );
  131. $local= $local.subst( :g , / '@@1 (' (.+?) ') ==' / , -> $/ { '{' ~ $0 ~ '} ==' } );
  132. ## $local= $local.subst( :g , / '@@1 (' ('~'\d+) ') ==' / , -> $/ { '{' ~ $0 ~ '} ==' } );
  133. };
  134.  
  135. sub normalizeOrigCodes(Str $x) {
  136. my $local= $x;
  137. $local= $local.subst( :g , / ('==') / , -> $/ { ':equals' } );
  138. $local= $local.subst( :g , / ('{:::') / , -> $/ { '[<:::' } );
  139. $local= $local.subst( :g , / (':::}') / , -> $/ { ':::>]' } );
  140. $local= $local.subst( :g , / (' : ') / , -> $/ { ' ' } );
  141. $local= $local.subst( :g , / 'Run' / , -> $/ { 'goTo0' } );
  142. $local= $local.subst( :g , / '('<[A..Z]>[<[A..Z0..9]> | '_' ]*','\s* / , -> $/ { '( ' } );
  143. $local= $local.subst( :g , / '['<[A..Z]>[<[A..Z0..9]> | '_' ]*','\s* / , -> $/ { '[ ' } );
  144. $local= $local.subst( :g , / '[' (\s+) ']' / , -> $/ { '[' ~ "{'%' x$0.chars}" ~ ']' } );
  145. $local= $local.subst( :g , / '(' \s* [<[a..zA..Z]>]+ '## ' \s* / , -> $/ { '(' } );
  146. $local= $local.subst( :g , / '[' \s* [<[a..zA..Z]>]+ '## ' \s* / , -> $/ { '[' } );
  147. $local= $local.subst( :g , / '[' ([[<[a..z0..9;,]>]+]+)(\s*) ']' / , -> $/ { '[' ~ $0 ~ "{'#' x$1.chars}" ~ ']' } );
  148. $local= $local.subst( :g , / (\s+) / , -> $/ { '' } );
  149. $local= $local.subst( :g , / ([<[#]>]+) / , -> $/ { "{' ' x$0.chars}" } );
  150. $local= $local.subst( :g , / ('<:::') / , -> $/ { '&&x&&' } );
  151. $local= $local.subst( :g , / (':::>') / , -> $/ { '&&y&&' } );
  152. $local= $local.subst( :g , / (':~')(\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) / , -> $/ { '[' ~ '~' ~ $1 ~ ']' } );
  153. $local= $local.subst( :g , / (':~')(\d+) / , -> $/ { '[' ~ '~' ~ $1 ~ ']' } );
  154. $local= $local.subst( :g , / ('<') / , -> $/ { '[@@2' } );
  155. $local= $local.subst( :g , / ('>') / , -> $/ { ']' } );
  156. $local= $local.subst( :g , / ('&&x&&') / , -> $/ { '<:::' } );
  157. $local= $local.subst( :g , / ('&&y&&') / , -> $/ { ':::>' } );
  158. $local= $local.subst( :g , / (':::') / , -> $/ { '&&&&' } );
  159. $local= $local.subst( :g , / ':' (\d+) / , -> $/ { '-' ~ $0 } );
  160. $local= $local.subst( :g , / ':' ([<[a..zA..Z0..9]> | '_' ]+ | \d+) / , -> $/ { '-' ~ $0 } );
  161. $local= $local.subst( :g , / ('&&&&') / , -> $/ { ':::' } );
  162. $local= $local.subst( :g , / '-' (\d+) / , -> $/ { '[' ~ $0 ~ ']' } );
  163. $local= $local.subst( :g , / '-' ([<[a..zA..Z0..9]> | '_' ]+ | \d+) / , -> $/ { '[' ~ $0 ~ ']' } );
  164. $local= $local.subst( :g , / ('proc[') ([<[a..zA..Z0..9]> | '_' ]+ | \d+) ('][') (\d+) (']{:::') (.+?) (':::}') / , -> $/ { $0 ~ $1 ~ $2 ~ $3 ~ '][<:::' ~ $5 ~ ':::>]' } );
  165. $local= $local.subst( :g , / ('proc[') ([<[a..zA..Z0..9]> | '_' ]+ | \d+) ('][') (\d+) (']{') (.+?) ('}') / , -> $/ { $0 ~ $1 ~ $2 ~ $3 ~ '][<:::' ~ $5 ~ ':::>]' } );
  166. $local= $local.subst( :g , / '{' (.+?) '}' / , -> $/ { '@@1(' ~ $0 ~ ')' } );
  167. ## $local= $local.subst( :g , / '{' ('~'\d+) '}' / , -> $/ { '@@1(' ~ $0 ~ ')' } );
  168. };
  169.  
  170. $lastRwcodeDef=
  171. 'stepBy
  172. ( jumpTo::=1={::: id ( ~0:x1 (concat:x(~0:x0)) ( ~0 :x1) ) :::} )
  173. ';
  174.  
  175. $lastRwcode= normalizeOrigCodes($lastRwcodeDef);
  176.  
  177. say "\n\n\n\nOriginal Codes: ";
  178. say "---------------\n\n$origRwcode ";
  179. say "\n\n\nNormalized Codes: ";
  180. say "-----------------\n\n{normalizeOrigCodes($origRwcode)} \n\n";
  181.  
  182. $rwcode= '';
  183.  
  184. grammar Rewrite4
  185. {
  186. rule TOP {
  187. {
  188. if $sr > $srMax {
  189. $srMax= $sr;
  190. };
  191. $englobingNoRWdegree= 0;
  192. $sr++;
  193. }
  194. <WFE>
  195. {$sr--;}
  196. };
  197. rule WFE {
  198. {
  199. $srw++;
  200. if $sr > $srMax {
  201. $srMax= $sr;
  202. };
  203. if $sr == 1 {
  204. @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 3]= -1;
  205. }
  206. else {
  207. if @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1] == -1 {
  208. @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 3]= -1;
  209. };
  210. $BIStemp2= @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1] + 1;
  211. $BIStemp22= @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1] + 1;
  212. @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1]= $BIStemp2;
  213. };
  214. if $sr > 2 {
  215. if $runNum > 0 {
  216. if @curWFEbrace[$sr - 1] === '[' {
  217. if $englobingNoRWdegree == 0 {
  218. $englobingNoRWdegree= 1;
  219. @isBaseBISlistOfWFEbraceTypesForGivenARGLISTruleRun[$sr + 1][$BIStemp2]= 1;
  220. }
  221. else {
  222. @isBaseBISlistOfWFEbraceTypesForGivenARGLISTruleRun[$sr + 1][$BIStemp2]= 0;
  223. $englobingNoRWdegree++;
  224. };
  225. }
  226. else {
  227. @isBaseBISlistOfWFEbraceTypesForGivenARGLISTruleRun[$sr + 1][$BIStemp2]= 0;
  228. };
  229. };
  230. };
  231.  
  232. @OPvariety[$sr]= 'na';
  233. $sr++;
  234. $tmplateOP= 0;
  235. }
  236. <OP> <ARGLIST>
  237. {$sr--;}
  238. };
  239. rule ARGLIST {
  240. {
  241. if $sr > $srMax {
  242. $srMax= $sr;
  243. };
  244. @curbraceIdx[$sr]= 0;
  245. $sr++;
  246. }
  247. [<ARG>]*
  248. {$sr--;}
  249. };
  250. rule ARG {
  251. [(['('|'[']){@curWFEbrace[$sr - 1]= $0.Str;}<.eol>* <WFE>[')'|']']]
  252. };
  253.  
  254. proto token OP {*}
  255. token OP:sym<NUM> { <NUM> }
  256. token NUM {
  257. \d+
  258. };
  259. token OP:sym<OP3> { <OP3> }
  260. token OP3 {
  261. <:alpha>\w*
  262. # <[a..zA..Z]>[<[a..z0..9]>]*
  263. };
  264. token OP:sym<OP5> { <OP5> }
  265. token OP5 {
  266. 'stepBy'|'id'|'term'|'proc'|'subItem'|'subVar'|'maps'|'isVector'|'isSubstnTemplate'|'isPointy'|'concat'|'string'|'selfRepeat'|'cTerm'\d+|'@@'\d+|'add'|'sub'|'mult'|'IF'|\w+'::='\d+'='|'goTo'\d+|'say'|'dcl'|'stepThru'\d+
  267. };
  268. token OP:sym<OP2> { <OP2> }
  269. token OP2 {
  270. [[[<[a..zA..Z0..9]> | '_' ]+]]|'defTerm'|'defProc'|'ERROR'|'nil'|'hellotwelve'|'two'|'four'|'six'|'offhook'|'('|')'|'['|']'|'$'|'; '|': '|':'|'<<'|'>>'|'vector'|'~'|'+'|'-'|'='|'&'|'!'|'*'|'"'|'/'|"\\"|"\'"|[\%+]|[\.+]|[\,+]|[\;+]
  271. };
  272. token OP:sym<PROC2> { <PROC2> }
  273. token PROC2 {
  274. '%'\d+ [<ARG>]+
  275. };
  276. token OP:sym<PROC> { <PROC> }
  277. token PROC {
  278. ['<' \s* [<OP><ARGLIST>] \s* [[';'] \s* [<OP><ARGLIST>] \s*]* '>']
  279. };
  280. token OP:sym<OP6> { <OP6> }
  281. token OP6 {
  282. '<:::' \s* ['.'|'@@'|'__'|'@'|'('|'='|','|'['|')'|']'|'~'|\d|\w|\n|\s]+ \s* ':::>'
  283. };
  284. token eol { [ <[#;]> \N* ]? \n };
  285. };
  286.  
  287. class RewriteAction4 {
  288.  
  289. method TOP($/) {
  290. $/.make($rewriteWFE);
  291. $stopreduction= 0;
  292. $needNewDescend= 0;
  293. };
  294.  
  295. method WFE($/) {
  296. $stopredOP= ''; $stopredWhileMin= 0; $stopredWhileMax= 0;
  297. $wrongArgTypes= 0;
  298. $saySuccess= 0;
  299. $addMultSuccess= 0;
  300. @OPstr[$sr]= $<OP>.Str;
  301. if $runNum > 0 {
  302. if $lastRunNum < $runNum {
  303. $lastRunNum= $runNum;
  304. say " " if $debug; say " " if $debug; say " " if $debug;
  305.  
  306. if $runNum == 1 {$entryWFE2= normalizeOrigCodes($origRwcode);} else {$entryWFE2= $rwcode;};
  307. say "\n\n\n " if (($debug4 == 1) and (not($debug2 == 1)));
  308. say "\n\n" if (($debug4 == 1) and ($debug2 == 1));
  309.  
  310. say "\n\n\n\n==========================================================================>" if (($debug2 == 1) and ($debug4 == 0));
  311. say "\( TREE DESCEND #{$runNum}: \)" if (($debug2 == 1) and ($debug4 == 0));
  312. say ". . . . . . " if (($debug2 == 1) and ($debug4 == 0));
  313.  
  314. if $runNum == 1 {
  315. say '"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""' if $debug4;
  316. say "\( STARTING TREE DESCEED #1: \)\n\n {trimBrackets($entryWFE2)}\n" if ($debug4 == 1) and ($debug2 == 0);
  317. say "\( STARTING TREE DESCNND #1: \)\n" if ($debug4 == 1) and ($debug2 == 1);
  318. }
  319. else {
  320. say "\n==========================================================================>" if $debug4;
  321. say "\( TREE DESCEND #{$runNum}: \)\n\n {trimBrackets($entryWFE2)}\n" if ($debug4 == 1) and ($debug2 == 0);
  322. say "\( TREE DESCEND #{$runNum}: \)\n" if ($debug4 == 1) and ($debug2 == 1);
  323. };
  324. };
  325. if $rewriteArgListElems == 0 { $temp1= $<OP>.Str; }
  326. else { $temp1= "{ if $sr == 1 {"\n "}}" ~ $<OP>.Str ~ @rewriteArgList[$sr + 1]; };
  327.  
  328. if $englobingNoRWdegree > 0 { $noSkips= 0; } else { $noSkips= 1; };
  329. say " " if $debug;
  330. };
  331.  
  332. if $stopreduction == 1 {}
  333. elsif $englobingNoRWdegree > 0 {
  334. say " " if $debug;
  335. if $sr > 1 {
  336. if $rewriteArgListElems == 0 {
  337. say ".{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) 0SKIP\.$englobingNoRWdegree: {trimBrackets($temp1)}" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  338. };
  339. }
  340. else {
  341. say ".{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) 1SKIPnestg$englobingNoRWdegree:" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  342. };
  343. };
  344. if $sr > 2 {
  345. $BIStemp2= @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1];
  346. };
  347. if $rewriteArgListElems == 0 {
  348. $rewriteWFE= $<OP>.Str;
  349. if ($runNum > 0) and ($stopreduction == 0) and ($englobingNoRWdegree == 0) {
  350. };
  351. $entryWFE= $<OP>.Str;
  352. if $sr > 2 {
  353. @listOfCurBraces[$sr-1][@curbraceIdx[$sr-1]]= @curWFEbrace[$sr - 1];
  354. if @curbraceIdx[$sr-1] == 0 {
  355. $curBrace= @curWFEbrace[$sr - 1];
  356. }
  357. else {
  358. if @curWFEbrace[$sr - 1] === '[' { $curBrace= '['; } else { $curBrace= '('; };
  359. };
  360. };
  361. if $runNum > 0 { if $stopreduction == 1 { $wrongArgTypes= 1; }; };
  362. }
  363. else {
  364. $rewriteWFE= $<OP>.Str ~ @rewriteArgList[$sr + 1];
  365.  
  366. $entryWFE= $rewriteWFE;
  367. if $sr > 2 {
  368. @listOfCurBraces[$sr-1][@curbraceIdx[$sr-1]]= @curWFEbrace[$sr - 1];
  369. if @curbraceIdx[$sr-1] == 0 { $curBrace= @curWFEbrace[$sr - 1]; }
  370. else {
  371. if @curWFEbrace[$sr - 1] === '[' { $curBrace= '['; }
  372. else { $curBrace= '('; };
  373. };
  374. };
  375.  
  376. if $runNum == 0 {}
  377. elsif $englobingNoRWdegree > 0 {
  378. $curIdx= 0;
  379. $stopredOP= $<OP>.Str; $stopredWhileMin= $curIdx; $stopredWhileMax= $rewriteArgListElems;
  380. while $curIdx < $rewriteArgListElems {
  381. if @currentARGLISTlistOfBraceTypesOfComponentWFEs[$curIdx] === '['
  382. { $tempLeftBrace= '['; $tempRightBrace= ']'; }
  383. else { $tempLeftBrace= '('; $tempRightBrace= ')'; };
  384. @stopredWFEcompArgList[$curIdx]= $tempLeftBrace ~ @WFEcompArgList[$curIdx] ~ $tempRightBrace;
  385. $curIdx++;
  386. };
  387.  
  388. # say ".{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) 22SKIP\.$englobingNoRWdegree: {trimBrackets($entryWFE)}" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  389. say ".{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) 2SKIP\.$englobingNoRWdegree: " if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  390. say " {'|' x$sr} {trimBrackets($stopredOP)}" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  391. # say " {'|' x$sr} $stopredOP" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  392. $curIdx= $stopredWhileMin;
  393. while $curIdx < $stopredWhileMax {
  394. $entryWFE2= "{@stopredWFEcompArgList[$curIdx]}";
  395. say " {'|' x$sr} {trimBrackets($entryWFE2)}" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  396. # say " {'|' x$sr} $entryWFE2" if (($englobingNoRWdegree == 1) and ($needNewDescend == 0) and ($debug4 == 1) and (not($debug2 == 1)));
  397. $curIdx= $curIdx + 1;
  398. };
  399. }
  400. else {
  401. $rewriteWFE= $<OP>.Str ~ @rewriteArgList[$sr + 1];
  402. if $stopreduction == 1 {} else {
  403. if @OPvariety[$sr] === 'NUM' { $rewriteWFE= $<OP>.Str; }
  404. elsif @OPvariety[$sr] === 'PROC' { $stopreduction= 1; }
  405. elsif @OPvariety[$sr] === 'OP5' {
  406.  
  407. if ($<OP>.Str === 'IF') and ($rewriteArgListElems > 2) {
  408. if @WFEcompArgList[0] === '0' {$rewriteWFE= @WFEcompArgList[1]; }
  409. else {$rewriteWFE= @WFEcompArgList[2]; };
  410. fillRestOfArgsV1(3); $stopreduction= 1; }
  411.  
  412. elsif ($<OP>.Str === 'stepBy') and ($rewriteArgListElems > 0) {
  413. $rewriteWFE= @WFEcompArgList[$rewriteArgListElems - 1];
  414. $stopreduction= 1;
  415. $stopredOP= $rewriteWFE; $stopredWhileMin= 0; $stopredWhileMax= 0; }
  416.  
  417. elsif ($<OP>.Str === 'id') and ($rewriteArgListElems > 0) {
  418. $rewriteWFE= @WFEcompArgList[0];
  419. fillRestOfArgsV1(1); $stopreduction= 1; }
  420.  
  421. elsif ($<OP>.Str === 'say') and ($runNum > 0) {
  422. say " " if (($debug2 == 0) and ($debug4 == 1));
  423. say " {' ' x$sr} {'( ****** LEVEL'}$sr {'ACTION '}\#$output\: {'say '}\) {@WFEcompArgList[0]}";
  424. say " " if (($debug2 == 1) and ($debug4 == 0));
  425. $rewriteWFE= 'nil';
  426. $output++;
  427. $saySuccess= 1;
  428. }
  429.  
  430. elsif (($<OP>.Str === 'concat') or ($<OP>.Str === 'string')) and ($rewriteArgListElems > 0) {
  431. $rewriteWFE= '';
  432. $curIdx= 0;
  433. while $curIdx < $rewriteArgListElems {
  434. $input= @WFEcompArgList[$curIdx];
  435. @tempStmt[0]= '';
  436. $input= $input.subst( :g , /^(\%+)$/ ,
  437. -> $/ { @tempStmt[0]= 'ok'; "{' ' x$0.chars}" } );
  438. if @tempStmt[0] ~~ 'ok' {$rewriteWFE= $rewriteWFE ~ $input;}
  439. else {$rewriteWFE= $rewriteWFE ~ @WFEcompArgList[$curIdx];};
  440. $curIdx= $curIdx + 1;
  441. };
  442. if $<OP>.Str === 'string' { $stopreduction= 1;
  443. $stopredOP= $rewriteWFE; $stopredWhileMin= 0; $stopredWhileMax= 0; }; }
  444.  
  445. elsif $runNum > 0 {
  446.  
  447. $input= $<OP>.Str;
  448. @tempStmt[0]= ''; @tempStmt[1]= ''; @tempStmt[2]= ''; @tempStmt[3]= '';
  449. $tp1= $input.subst( :g , /(\w+)(['::='])(\d+)(['='])/ ,
  450. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1;
  451. @tempStmt[2]= $2; @tempStmt[3]= $3 } );
  452. if (@tempStmt[1] ~~ '::=') and (@tempStmt[3] ~~ '=') {
  453. if %*PROCS{"{@tempStmt[0]}"} === Any {
  454. %*PROCS{"{@tempStmt[0]}"}= @WFEcompArgList[0];
  455. %*PROCSparmNum{"{@tempStmt[0]}"}= @tempStmt[2];
  456. $rewriteWFE= 'nil';
  457. } else {die "duplicated shorthand"; }; };
  458.  
  459. $input= $<OP>.Str;
  460. @tempStmt[0]= ''; @tempStmt[1]= '';
  461. $tp1= $input.subst( :g , /^(['stepThru'])(\d+)/ ,
  462. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1; } );
  463. if (@tempStmt[0] ~~ 'stepThru') and ($rewriteArgListElems > @tempStmt[1].Int) {
  464. $rewriteWFE= @WFEcompArgList[@tempStmt[1].Int];
  465. fillRestOfArgsV1(@tempStmt[1].Int + 1); $stopreduction= 1;
  466. };
  467.  
  468. $input= $<OP>.Str;
  469. $tp1= ''; @tempStmt[0]= ''; @tempStmt[1]= '';
  470. $tp1= $input.subst( :g , /^(['cTerm'])(\d+)/ ,
  471. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1 } );
  472. if (@tempStmt[0] ~~ 'cTerm') and (@tempStmt[1] > 0) {
  473. if $rewriteArgListElems == @tempStmt[1] {}
  474. elsif $rewriteArgListElems < @tempStmt[1] {$rewriteWFE= 'ERROR too short'; die; }
  475. elsif $rewriteArgListElems > @tempStmt[1] {
  476. $tp2= $<OP>.Str;
  477. $curIdx= 0; while $curIdx < (@tempStmt[1] + 1) { $tp2= $tp2 ~ '[' ~ @WFEcompArgList[$curIdx] ~ ']'; $curIdx= $curIdx + 1; };
  478. if %*TERMS{"{$tp2}"} === Any {} else {
  479. $rewriteWFE= %*TERMS{"{$tp2}"};
  480. fillRestOfArgsV1(@tempStmt[1] + 1);
  481. $stopreduction= 1; }; }; };
  482.  
  483. $input= $<OP>.Str;
  484. $tp1= '';
  485. @tempStmt[0]= ''; @tempStmt[1]= '';
  486. $tp1= $input.subst( :g , /^(['@@'])(\d+)/ ,
  487. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1 } );
  488. if (@tempStmt[0] ~~ '@@')
  489. and ((@tempStmt[1] > 0) or (@tempStmt[1] == 0)) {
  490. $tp0= @tempStmt[0];
  491. if $rewriteArgListElems == @tempStmt[1] {}
  492. elsif $rewriteArgListElems < @tempStmt[1] {$rewriteWFE= 'ERROR';}
  493. elsif $rewriteArgListElems > @tempStmt[1] {
  494.  
  495. if (@WFEcompArgList[@tempStmt[1]] ~~ 'setSubVar')
  496. and ((@tempStmt[1] > 0) or (@tempStmt[1] == 0)) {
  497. if @tempStmt[1] == 0 {
  498. # $rewriteWFE= 'assocList1[subVar[' ~ @WFEcompArgList[1] ~ '][' ~ @WFEcompArgList[2] ~ ']]';
  499. if $rewriteArgListElems > 2 {
  500. $rewriteWFE= $tp0 ~ '1[subVar[' ~ @WFEcompArgList[1] ~ '][' ~ @WFEcompArgList[2] ~ ']]';
  501. if $rewriteArgListElems > 3 {
  502. fillRestOfArgsV1(3);
  503. $stopreduction= 1; }; }; }
  504. else {
  505. if ( $rewriteArgListElems > (@tempStmt[1] + 2) ) {
  506. @WFEcompArgListTemp[@tempStmt[1] + 1]
  507. = 'subVar[' ~ @WFEcompArgList[@tempStmt[1] + 1] ~ ']';
  508. $rewriteWFE= '';
  509. $input= @WFEcompArgListTemp[@tempStmt[1] + 1]
  510. ~ '[' ~ @WFEcompArgList[@tempStmt[1] + 2] ~ ']';
  511. $tp1= '';
  512. $curIdx= 0;
  513. while $curIdx < @tempStmt[1] {
  514. if ( 'subVar[' ~ %*AssocListArg0{"{@WFEcompArgList[$curIdx]}Arg0"} ~ ']' ~~ @WFEcompArgListTemp[@tempStmt[1] + 1] ) {
  515. if ( ('subVar[' ~ %*AssocListArg0{"{@WFEcompArgList[$curIdx]}Arg0"} ~ ']'
  516. ~ '[' ~ %*AssocListArg1{"{@WFEcompArgList[$curIdx]}Arg1"} ~ ']' )
  517. ~~ @WFEcompArgList[$curIdx] ) {
  518. $rewriteWFE= $rewriteWFE ~ '[' ~ $input ~ ']';
  519. $tp1= 'SUCCESS'; }
  520. else {$rewriteWFE= 'ERRORvvvvvvvvvvvvvvvvvvvvvvvv'; $stopreduction= 1;}; }
  521. else {
  522. $rewriteWFE= $rewriteWFE ~ '[' ~ @WFEcompArgList[$curIdx] ~ ']';
  523. };
  524. $curIdx= $curIdx + 1;
  525. if $curIdx == @tempStmt[1] {
  526. if $tp1 ~~ 'SUCCESS' {$rewriteWFE= $tp0 ~ "{@tempStmt[1]}" ~ $rewriteWFE;}
  527. else {
  528. $rewriteWFE= $tp0 ~ "{@tempStmt[1] + 1}" ~ $rewriteWFE ~ '[' ~ $input ~ ']'; }; }; };
  529. if $rewriteArgListElems > (@tempStmt[1] + 3) {
  530. fillRestOfArgsV1(@tempStmt[1] + 3);
  531. $stopreduction= 1; }; }; }; }
  532.  
  533. elsif ((@WFEcompArgList[@tempStmt[1]] ~~ 'getSubVar')
  534. or (@WFEcompArgList[@tempStmt[1]] ~~ 'getSubItem'))
  535. and ((@tempStmt[1] > 0) or (@tempStmt[1] == 0)) {
  536. if ( $rewriteArgListElems < (@tempStmt[1] + 2) ) {}
  537. else {
  538. $rewriteWFE= 'nil';
  539. $curIdx= 0;
  540. while $curIdx < @tempStmt[1] {
  541. if ( %*AssocListArg0{"{@WFEcompArgList[$curIdx]}Arg0"} ~~ @WFEcompArgList[@tempStmt[1] + 1] ) {
  542. $rewriteWFE= %*AssocListArg1{"{@WFEcompArgList[$curIdx]}Arg1"};
  543. if @WFEcompArgList[@tempStmt[1]] ~~ 'getSubVar' {
  544. if ( ('subVar[' ~ @WFEcompArgList[@tempStmt[1] + 1] ~ '][' ~ $rewriteWFE ~ ']') ~~ @WFEcompArgList[$curIdx] ) {}
  545. else {$rewriteWFE= 'ERROR'; die "subVar hash problem"; };
  546. }
  547. else {
  548. if ( ('subItem[' ~ @WFEcompArgList[@tempStmt[1] + 1] ~ '][' ~ $rewriteWFE ~ ']') ~~ @WFEcompArgList[$curIdx] ) {}
  549. else {$rewriteWFE= 'ERROR'; die "subItem hash problem"; };
  550. };
  551. $curIdx= @tempStmt[1];
  552. }
  553. else {$curIdx= $curIdx + 1; };
  554. };
  555. if ( $rewriteWFE ~~ 'nil' ) {}
  556. else {fillRestOfArgsV1(@tempStmt[1] + 2); $stopreduction= 1; }; }; }
  557.  
  558. elsif ((@WFEcompArgList[@tempStmt[1]] ~~ 'x0') or
  559. (@WFEcompArgList[@tempStmt[1]] ~~ 'x1') or
  560. (@WFEcompArgList[@tempStmt[1]] ~~ 'x2'))
  561. and (@tempStmt[1] > 0) {
  562. $input= @WFEcompArgList[@tempStmt[1]];
  563. @tempStmt[2]= '';
  564. $tp2= $input.subst( :g , /^['x'](\d+)/ ,
  565. -> $/ { @tempStmt[2]= $0; } );
  566. if @tempStmt[2] < @tempStmt[1] {
  567. $rewriteWFE= @WFEcompArgList[@tempStmt[2]];
  568. fillRestOfArgsV1(@tempStmt[1] + 1); $stopreduction= 1; }; }
  569.  
  570. else {
  571. $rewriteWFE= @WFEcompArgList[@tempStmt[1]];
  572. $curIdx= 0;
  573. while $curIdx < $rewriteArgListElems {
  574. if $curIdx !== @tempStmt[1] {$rewriteWFE= $rewriteWFE ~ '[' ~ @WFEcompArgList[$curIdx] ~ ']'; };
  575. $curIdx= $curIdx + 1;
  576. };
  577. $stopreduction= 1;
  578. $stopredOP= $rewriteWFE; $stopredWhileMin= 0; $stopredWhileMax= 0; }; }
  579.  
  580. else {};
  581. };
  582.  
  583. }
  584. else { die "cccc"; };
  585. }
  586.  
  587. elsif (@OPvariety[$sr] === 'OP2') or (@OPvariety[$sr] === 'OP3') {
  588. $input= %*PROCS{"{$<OP>.Str}"};
  589. if $input === Any {
  590. $input= %*TERMS{"{$<OP>.Str ~ '[' ~ @WFEcompArgList[0] ~ ']'}"};
  591. if $input === Any {}
  592. else {
  593. $rewriteWFE= $input;
  594. fillRestOfArgsV1(1);
  595. $wrongArgTypes= 1;
  596. $stopreduction= 1;
  597. };
  598. }
  599. elsif $rewriteArgListElems < %*PROCSparmNum{"{$<OP>.Str}"} {} else {
  600. say "zzzzzzzzzzzz0 sr $sr OPvariety {@OPvariety[$sr]} Elems $rewriteArgListElems";
  601. $tp0= '___'; $tp1= $<OP>.Str; @tempStmt[0]= '___';
  602. say "zzzzzzzzzzzz1 tp0 $tp0 tp1 $tp1 WFEcompArgList0 @WFEcompArgList[0] ";
  603. if %*PROCS{"{@WFEcompArgList[0]}"} === Any {} else {
  604. $input= %*PROCS{"{@WFEcompArgList[0]}"}.Str;
  605. say "zzzzzzzzzzzz2 input $input ";
  606. $input= $input.subst( :g ,
  607. / ('@@')\d+ '[' ('CallSession') ']' / ,
  608. -> $/ { @tempStmt[0]= $0; } );
  609. say "zzzzzzzzzzzz3 tempStmt0 {@tempStmt[0]} ";
  610. if @tempStmt[0] ~~ '@@' {$tp0= @WFEcompArgList[0];};
  611. };
  612. say "zzzzzzzzzzzz4 tp0 $tp0 tp1 $tp1 WFEcompArgList0 @WFEcompArgList[0] ";
  613.  
  614. $curIdx2= 0;
  615. while $curIdx2 < $rewriteArgListElems {
  616. @WFEcompArgListTemp[$curIdx2]= @WFEcompArgList[$curIdx2];
  617. $curIdx2= $curIdx2 + 1;
  618. };
  619.  
  620. $curIdx2= 0;
  621. while $curIdx2 < $rewriteArgListElems {
  622. $input= @WFEcompArgListTemp[$curIdx2];
  623. say "zzzzzzzzzzzz5 curIdx2 $curIdx2 tp0 $tp0 input $input ";
  624. @tempStmt[0]= 'com'; @tempStmt[1]= 'rew';@tempStmt[2]= 'com2'; @tempStmt[3]= 'rew2';
  625. $input= $input.subst( :g ,
  626. / ^(''\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) ['('|'['] (.+) [')'|']']$/ ,
  627. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1; @tempStmt[2]= $2; @tempStmt[3]= $3; } );
  628.  
  629. if (@tempStmt[1] ~~ '__') {
  630. @WFEcompArgListTemp[$curIdx2]= @tempStmt[3];
  631.  
  632. if $tp0 ~~ '___' {} else {
  633. if %*GOTOARGNAMES{"{$tp0 ~ '--' ~ "{$curIdx2}"}"} === Any {
  634. %*GOTOARGNAMES{"{$tp0 ~ '--' ~ "{$curIdx2}"}"}= @tempStmt[0] ~ @tempStmt[1] ~ @tempStmt[2];
  635. say "zzzzzzzzzzzz6 curIdx2 $curIdx2 tp0 $tp0 GOTOARGNAMES {%*GOTOARGNAMES{"{$tp0 ~ '--' ~ "{$curIdx2}"}"}} ";
  636. };
  637. };
  638. };
  639. $curIdx2= $curIdx2 + 1;
  640. };
  641.  
  642. if %*PROCSparmNum{"{$<OP>.Str}"} == 0 {
  643. $input= %*PROCS{"{$<OP>.Str}"};
  644. $input= $input.subst( :g , / '<:::' / , -> $/ { '' } );
  645. $input= $input.subst( :g , / ':::>' / , -> $/ { '' } );
  646. $rewriteWFE= $input;
  647. fillRestOfArgsV1(0); $stopreduction= 1;
  648. }
  649. else {
  650. ## $tmplateOP= 1;
  651. $actualTemplate= $<OP>.Str;
  652. $tmplateNumOfParms= %*PROCSparmNum{"{$<OP>.Str}"};
  653. if $rewriteArgListElems < $tmplateNumOfParms {
  654. $parmSubstnResult= $actualTemplate;
  655. $curIdx= 0;
  656. while $curIdx < $rewriteArgListElems {
  657. $parmSubstnResult= $parmSubstnResult ~ '[' ~ @WFEcompArgList[$curIdx] ~ ']';
  658. $curIdx= $curIdx + 1;
  659. };
  660. $wrongArgTypes= 1;
  661. }
  662. else {
  663. $input= %*PROCS{"{$<OP>.Str}"};
  664. $tp2= $input;
  665. $tmplateStr= $input;
  666. $input= $input.subst( :g , / '<:::' / , -> $/ { '' } );
  667. $input= $input.subst( :g , / ':::>' / , -> $/ { '' } );
  668. if $input === $tp2 {$parmSubstnResult= $tp2; }
  669. else {
  670. $input= $input.subst( :g , / ('~')(\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) / , -> $/ { $0 ~ $1 } );
  671. $tp1= $input.subst( :g , / '~'(\d+) / ,
  672. -> $/ { @WFEcompArgListTemp[$0]; } );
  673. $parmSubstnResult= $tp1;
  674. $wrongArgTypes= 1;
  675. $stopreduction= 1;
  676. };
  677. };
  678.  
  679. $rewriteWFE= $parmSubstnResult;
  680. if $parmSubstnResult ~~ $tp2 {fillRestOfArgsV1(0); }
  681. else {fillRestOfArgsV1($tmplateNumOfParms); }; }; }; }
  682. else { die "wrong OP"; }; }; }; };
  683.  
  684. $/.make($rewriteWFE);
  685.  
  686. # as initialized below at call of method OP:
  687. # @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  688. if $sr > 2 {
  689. $temp2= @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr - 1];
  690. @listOfWFErewritesForGivenARGLISTruleRun[$sr - 1][$temp2]= $rewriteWFE;
  691. if $runNum == 0 { @listOfWFEbraceTypesForGivenARGLISTruleRun[$sr - 1][$temp2]= @curWFEbrace[$sr - 1]; }
  692. else {
  693. if $englobingNoRWdegree > 0 { $wrongArgTypes= 1; };
  694. if $stopreduction == 1 { $wrongArgTypes= 1; };
  695. if ($stopreduction == 1) and ($saySuccess == 1) { $wrongArgTypes= 0; };
  696. if $wrongArgTypes == 1 { @listOfWFEbraceTypesForGivenARGLISTruleRun[$sr - 1][$temp2]= @curWFEbrace[$sr - 1]; }
  697. else { @listOfWFEbraceTypesForGivenARGLISTruleRun[$sr - 1][$temp2]= '['; };
  698. };
  699. @listOfOPvarietyForGivenARGLISTruleRun[$sr - 1][$temp2]= @curWFEopVariety[$sr + 1];
  700. if $addMultSuccess == 1 { @listOfOPvarietyForGivenARGLISTruleRun[$sr - 1][$temp2]= 'NUM'; };
  701. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr - 1]= $temp2 + 1;
  702. if $runNum == 0 {
  703. @BISlistOfWFEbraceTypesForGivenARGLISTruleRun[$sr + 1][$BIStemp2]= $curBrace;
  704. @BISlistOfWFErewritesForGivenARGLISTruleRun[$sr + 1][$BIStemp2]= $rewriteWFE;
  705. };
  706. @curbraceIdx[$sr-1]= @curbraceIdx[$sr-1] + 1;
  707. if $curBrace === '[' {
  708. $englobingNoRWdegree--;
  709. if $englobingNoRWdegree == 1 {
  710. $BIStemp2= @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1];
  711. $BIStemp22= @BISelemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr + 1];
  712. if $sr > 2 {
  713. if @isBaseBISlistOfWFEbraceTypesForGivenARGLISTruleRun[$sr + 1][$BIStemp2] == 1 {
  714. $englobingNoRWdegree= 0; }; }; }; }; };
  715.  
  716. if $noSkips == 1 {
  717.  
  718. if (($sr == 1) and ($debug2 == 1) and ($debug4 == 1)) {}
  719. else {
  720.  
  721. if $runNum > 0 {
  722. $entryWFE2= $entryWFE;
  723. $entryWFE4= $/.made;
  724.  
  725. if $entryWFE !=== $/.made {
  726. say " " if $debug;
  727. if $stopreduction == 0 {
  728. say "\n.{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) RW SUCCESS:" if $debug4; }
  729. else {
  730. say "\n.{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) EXPANDING RW - NEED NEW DESCEND NOW:" if $debug4;
  731. $needNewDescend= 1;
  732. };
  733.  
  734. say " {'|' x$sr} {trimBrackets($<OP>.Str)}" if $debug4;
  735. $curIdx= 0;
  736. while $curIdx < $rewriteArgListElems {
  737. $entryWFE2= '[' ~ "{@WFEcompArgList[$curIdx]}" ~ ']';
  738. say " {'|' x$sr} {trimBrackets($entryWFE2)}" if $debug4;
  739. $curIdx++;
  740. };
  741.  
  742. if $stopreduction == 0 {
  743. say " {'|' x$sr} " if $debug4;
  744. say " {'|' x$sr} ====> {trimBrackets($entryWFE4)}" if $debug4;
  745. }
  746. else {
  747. say " {'|' x$sr} " if $debug4;
  748. say " {'|' x$sr} =============>" if $debug4;
  749. say " {'|' x$sr} {trimBrackets($stopredOP)}" if $debug4;
  750. if $stopredWhileMin < $stopredWhileMax {say " {'|' x$sr} " if $debug4;};
  751. $curIdx= $stopredWhileMin;
  752. while $curIdx < $stopredWhileMax {
  753. $entryWFE2= '[' ~ "{@stopredWFEcompArgList[$curIdx]}" ~ ']';
  754. say " {'|' x$sr} {trimBrackets($entryWFE2)}" if $debug4;
  755. $curIdx= $curIdx + 1;
  756. };
  757.  
  758. };
  759. say " " if (($debug2 == 1) or ($debug4 == 1)) and (($debug2 == 0) or ($debug4 == 1));
  760. say " " if $debug;
  761. }
  762. else {
  763. $input= $entryWFE;
  764. $tp1= '';
  765. @tempStmt[0]= ''; @tempStmt[1]= '';
  766. $tp1= $input.subst( :g , /^(['$'])(\w+)/ ,
  767. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1 } );
  768. if $stopreduction == 0 {
  769. say " " if $debug;
  770. if $rewriteArgListElems == 0 {
  771. say "\n.{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) NOT REWRITABLE: {trimBrackets($entryWFE2)}" if $debug4;
  772. }
  773. else {
  774. say "\n.{'m' x$sr}.LEVEL$sr \(type @OPvariety[$sr] w $rewriteArgListElems args\) NOT REWRITABLE:" if $debug4;
  775. say " {'|' x$sr} {trimBrackets($<OP>.Str)}" if $debug4;
  776. $curIdx= 0;
  777. while $curIdx < $rewriteArgListElems {
  778. $entryWFE2= '[' ~ "{@WFEcompArgList[$curIdx]}" ~ ']';
  779. say " {'|' x$sr} {trimBrackets($entryWFE2)}" if $debug4;
  780. $curIdx++; }; };
  781. say " " if $debug4; }; }; }; }; }; $srw--; };
  782.  
  783.  
  784. method OP5($/) {
  785. $/.make($/.Str);
  786. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  787. @curWFEbrace[$sr]= ''; @OPstr[$sr - 1]= $/.made; @OPvariety[$sr - 1]= 'OP5'; @curWFEopVariety[$sr]= 'OP5'; };
  788. method NUM($/) {
  789. $/.make($/.Str);
  790. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  791. @curWFEbrace[$sr]= ''; @OPstr[$sr - 1]= $/.made; @OPvariety[$sr - 1]= 'NUM'; @curWFEopVariety[$sr]= 'NUM'; };
  792. method PROC($/) {
  793. $/.make($/.Str);
  794. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  795. @curWFEbrace[$sr]= ''; @OPstr[$sr - 1]= $/.made; @OPvariety[$sr - 1]= 'PROC'; @curWFEopVariety[$sr]= 'PROC';
  796. @entryTempoeName[$sr - 1]= $/.Str; };
  797. method OP6($/) {
  798. $/.make($/.Str);
  799. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  800. @curWFEbrace[$sr]= ''; @OPstr[$sr - 1]= $/.made; @OPvariety[$sr - 1]= 'OP6'; @curWFEopVariety[$sr]= 'OP6'; };
  801. method OP3($/) {
  802. $/.make($/.Str);
  803. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  804. @curWFEbrace[$sr]= ''; @OPstr[$sr - 1]= $/.made; @OPvariety[$sr - 1]= 'OP3'; @curWFEopVariety[$sr]= 'OP3'; };
  805. method OP2($/) {
  806. $/.make($/.Str);
  807. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  808. @curWFEbrace[$sr]= ''; @OPstr[$sr - 1]= $/.made; @OPvariety[$sr - 1]= 'OP2'; @curWFEopVariety[$sr]= 'OP2'; };
  809. method OP($/) {
  810. $/.make($/.Str);
  811. @elemsTotalOfListOfWFErewritesForGivenARGLISTruleRun[$sr]= 0;
  812. @curWFEbrace[$sr]= ''; };
  813.  
  814. method ARGLIST($/) {
  815. $rewriteArgListElems= $<ARG>.list.elems;
  816.  
  817. if $sr == 2 {
  818. $savedsr2rewriteArgListElems= $rewriteArgListElems;
  819. };
  820.  
  821. if $rewriteArgListElems == 0 {}
  822. else {
  823. @rewriteArgList[$sr]= '';
  824. if $rewriteArgListElems == 0 {} else {
  825. $curIdx= 0;
  826. for $<ARG>.list -> $curItem {
  827. @WFEcompArgList[$curIdx]= @listOfWFErewritesForGivenARGLISTruleRun[$sr][$curIdx];
  828. @currentARGLISTlistOfBraceTypesOfComponentWFEs[$curIdx]=
  829. @listOfWFEbraceTypesForGivenARGLISTruleRun[$sr][$curIdx];
  830. @currentARGLISTlistOflistOfOPvarietyOfComponentWFEs[$curIdx]=
  831. @listOfOPvarietyForGivenARGLISTruleRun[$sr - 1][$curIdx];
  832. if $sr == 2 {
  833. @savedsr2WFEcompArgList[$curIdx]= @WFEcompArgList[$curIdx];
  834. };
  835.  
  836. $curIdx++;
  837. };
  838. $curIdx= 0;
  839. for $<ARG>.list -> $curItem {
  840. if $curIdx > 0 {
  841. if @currentARGLISTlistOfBraceTypesOfComponentWFEs[$rewriteArgListElems - $curIdx] ~~ '['
  842. { @currentARGLISTlistOfBraceTypesOfComponentWFEs[$rewriteArgListElems - $curIdx]= '['; }
  843. else { @currentARGLISTlistOfBraceTypesOfComponentWFEs[$rewriteArgListElems - $curIdx]= '('; };
  844. };
  845. $curIdx++;
  846. };
  847. $curIdx= 0;
  848. for $<ARG>.list -> $curItem {
  849. @BraceTypeOfComponentWFEatGivenIndexInWFElistOfARGLISTatGivenSrLevel[$sr][$curIdx]=
  850. @currentARGLISTlistOfBraceTypesOfComponentWFEs[$curIdx];
  851. $curIdx++;
  852. };
  853. $curIdx= 0;
  854. for $<ARG>.list -> $curItem {
  855. if @currentARGLISTlistOfBraceTypesOfComponentWFEs[$curIdx] ~~ '['
  856. {
  857. $tempLeftBrace= '['; $tempRightBrace= ']';
  858. @tempLeftBrace[$curIdx]= '['; @tempRightBrace[$curIdx]= ']';
  859. }
  860. else {
  861. $tempLeftBrace= '('; $tempRightBrace= ')';
  862. @tempLeftBrace[$curIdx]= '('; @tempRightBrace[$curIdx]= ')';
  863. };
  864. @rewriteArgList[$sr]= @rewriteArgList[$sr] ~ $tempLeftBrace ~ @WFEcompArgList[$curIdx] ~ $tempRightBrace;
  865.  
  866. if $sr == 2 {
  867. @savedsr2tempLeftBrace[$curIdx]= @tempLeftBrace[$curIdx];
  868. @savedsr2tempRightBrace[$curIdx]= @tempRightBrace[$curIdx];
  869. };
  870.  
  871. $curIdx++;
  872. };
  873. };
  874.  
  875. if ($runNum > 0) and ($setup == 0) and (@OPstr[$sr - 1] ~~ 'subItem') and ($rewriteArgListElems == 2) {
  876. %*AssocListArg0{"{'subItem' ~ @rewriteArgList[$sr] ~ 'Arg0'}"}= @WFEcompArgList[0];
  877. %*AssocListArg1{"{'subItem' ~ @rewriteArgList[$sr] ~ 'Arg1'}"}= @WFEcompArgList[1];
  878. };
  879.  
  880. if ($runNum > 0) and ($setup == 0) and (@OPstr[$sr - 1] ~~ 'subVar') and ($rewriteArgListElems == 2) {
  881. %*AssocListArg0{"{'subVar' ~ @rewriteArgList[$sr] ~ 'Arg0'}"}= @WFEcompArgList[0];
  882. %*AssocListArg1{"{'subVar' ~ @rewriteArgList[$sr] ~ 'Arg1'}"}= @WFEcompArgList[1];
  883. };
  884.  
  885. if ($runNum > 0) and ($setup == 0) and (@OPstr[$sr - 1] ~~ 'proc') and ($rewriteArgListElems == 3) {
  886. $input= @WFEcompArgList[0];
  887. @tempStmt[0]= 'errorNOTtemplate';
  888. $input= $input.subst( :g , /^(\w+)/ , -> $/ { @tempStmt[0]= $0; } );
  889. if @tempStmt[0] === 'errorNOTtemplate' {die "errorNOTtemplate";}
  890. else {
  891. $input= @WFEcompArgList[1];
  892. @tempStmt[1]= 'errorNOTaNUM';
  893. ## $input= $input.subst( :g , /^'@@2[' (\d+) ']' '[' (\s* ['.'|'vector'|'@'|'('|'='|','|'['|')'|']'|\d|\w|\n|\s]+ \s* | '<:::' \s* ['.'|'@@'|'@'|'('|'='|','|'['|')'|']'|'~'|\d|\w|\n|\s]+ \s* ':::>') ']'/ , -> $/ { @tempStmt[2]= $0; @tempStmt[3]= $1; } );
  894. $input= $input.subst( :g , /^(\d+)/ , -> $/ { @tempStmt[1]= $0; } );
  895. if @tempStmt[1] === 'errorNOTaNUM' {die "errorNOTaNUM";}
  896. else {
  897. $input= @WFEcompArgList[2];
  898. @tempStmt[2]= 'errorNOTaTEMPLATE';
  899. $input= $input.subst( :g , /^('<:::' \s* ['.'|'updateArgsTotaling'|'assocList'|'@@'|'@'|'('|'='|','|'['|')'|']'|'~'|\d|\w|\n|\s]+ \s* ':::>')/ , -> $/ { @tempStmt[2]= $0; } );
  900. if @tempStmt[2] === 'errorNOTaTEMPLATE' {die "errorNOTaTEMPLATE";}
  901. else {
  902. if %*PROCS{"{@WFEcompArgList[0]}"} === Any {
  903. %*AssocListArg0{"{'proc' ~ @rewriteArgList[$sr] ~ 'Arg0'}"}= @WFEcompArgList[0];
  904. %*PROCSparmNum{"{@WFEcompArgList[0]}"}= @WFEcompArgList[1];
  905. %*PROCS{"{@WFEcompArgList[0]}"}= @WFEcompArgList[2];
  906. }
  907. elsif %*PROCS{"{@WFEcompArgList[0]}"} === @WFEcompArgList[2] {}
  908. else {die "errorIsNAMEalreadyUsedForDifferentTemplate";};
  909. };
  910. };
  911. };
  912. };
  913.  
  914. if ($runNum > 0) and ($setup == 0) and (@OPstr[$sr - 1] ~~ 'term') and ($rewriteArgListElems == 2) {
  915. $input= @WFEcompArgList[0];
  916. @tempStmt[0]= 'errorNOTmapping';
  917. $input= $input.subst( :g , /^(\w+)/ , -> $/ { @tempStmt[0]= $0; } );
  918. # $input= $input.subst( :g , /^('^^'\d+)/ , -> $/ { @tempStmt[0]= $0; } );
  919. if @tempStmt[0] === 'errorNOTmapping' {die "errorNOTmapping";}
  920. else {
  921. if %*TERMS{"{@WFEcompArgList[0]}"} === Any {
  922. # %*AssocListArg0{"{'term' ~ @rewriteArgList[$sr] ~ 'Arg0'}"}= @WFEcompArgList[0];
  923. # %*AssocListArg1{"{'term' ~ @rewriteArgList[$sr] ~ 'Arg1'}"}= @WFEcompArgList[1];
  924. %*TERMS{"{@WFEcompArgList[0]}"}= @WFEcompArgList[1];
  925. }
  926. elsif %*TERMS{"{@WFEcompArgList[0]}"} === @WFEcompArgList[1] {}
  927. else {die "errorIsNAMEalreadyUsedForDifferentTERMSmapping";};
  928. };
  929. };
  930.  
  931. $/.make(@rewriteArgList[$sr]);
  932. @curWFEbrace[$sr]= '';
  933. };
  934. };
  935.  
  936. };
  937.  
  938. if $debug {}
  939. else {
  940.  
  941. $debug= 0;
  942. $debug2= 0;
  943. $debug4= 0;
  944.  
  945. $lastRunNum= -1;
  946. $runNum= 0;
  947.  
  948. $continue= 1;
  949. while $continue > 0 {
  950. $rwcode= $lastRwcode;
  951. $match2= Rewrite4.parse( $rwcode, actions => RewriteAction4.new, );
  952. $lastRwcode= $match2.made;
  953. $lastRunNum= $runNum; $runNum++; $continue++;
  954. if $lastRwcode ~~ $rwcode { if $runNum > 1 { $continue= 0; }; };
  955. };
  956.  
  957. $debug= 0;
  958. $debug2= 1;
  959. $debug4= 1;
  960.  
  961. $lastRwcode= normalizeOrigCodes($origRwcode);
  962.  
  963. $continue= 1;
  964. $setup= 0;
  965.  
  966. $lastRunNum= -1;
  967. $runNum= 0;
  968. say "\n\n\n\nCODES EXECUTION:" if $debug4;
  969. say "\n\n\n\nHIGH LEVEL DESCEND-BY-DESCEND VIEW OF RW PROGRESS:" if $debug2;
  970. say "\(RECURSIVE LEFTMOST-INNERMOST APPLICATIVE REWRITE, TILL CODES NOT REWRITABLE\)\n\n" if $debug4;
  971.  
  972. say "\n\n\nRW PROCESS STARTING:" if (($debug2 == 1) and (not($debug4 == 1)));
  973. ## say " {trimBrackets($lastRwcode)}" if ($debug4 == 1);
  974.  
  975. while $continue > 0 {
  976. $rwcode= $lastRwcode;
  977. $match2= Rewrite4.parse( $rwcode, actions => RewriteAction4.new, );
  978. $lastRwcode= $match2.made;
  979.  
  980. if $runNum == 0 {} elsif $rewriteArgListElems > 0 {
  981. say " " if (($debug2 == 1) and ($debug4 == 1));
  982. say ".m.LEVEL1 AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #$runNum:" if $debug2;
  983. say ' | """""""""""""""""""""""""""""""""""""""""""""""""""""""' if $debug2;
  984. if $runNum < 1 {}
  985. else {
  986. if $runNum == 1 { say " | OP: {trimBrackets(@OPstr[1])} " if $debug2;}
  987. else {
  988. if @OPstr[1] ~~ $OPsav { say " | OP: <--------SAME AS IN ABOVE DESCEND: {trimBrackets($OPsav)}" if $debug2; }
  989. else { say " | OP: {trimBrackets(@OPstr[1])}" if $debug2; };
  990. };
  991. $OPsav2= $OPsav; $OPsav= @OPstr[1]; };
  992.  
  993. if $runNum < 1 {}
  994. else {
  995. $input= @OPstr[1];
  996. @tempStmt[0]= 'mmm';
  997. ## $tp1= $input.subst( :g , /^('goTo')\d+$/ ,
  998. $tp1= $input.subst( :g , /^(['jumpTo'|'CallSession'])$/ ,
  999. -> $/ { @tempStmt[0]= $0; } );
  1000. ## if @tempStmt[0] ~~ 'goTo' {
  1001. say "mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1 @OPstr1 {@OPstr[1]} tempStmt0 {@tempStmt[0]}";
  1002. if (@tempStmt[0] ~~ 'jumpTo') or (@tempStmt[0] ~~ 'CallSession') {
  1003. $curIdx2= 0; while $curIdx2 < $temp6 {
  1004. @WFEcompArgListTemp2[$curIdx2]= @WFEcompArgList[$curIdx2];
  1005. $curIdx2= $curIdx2 + 1; };
  1006. $curIdx2= 0; while $curIdx2 < $temp6 {
  1007. $input= @WFEcompArgListTemp2[$curIdx2];
  1008. @tempStmt[0]= 'com'; @tempStmt[1]= 'rew';@tempStmt[2]= 'com2'; @tempStmt[3]= 'rew2';
  1009. $tp1= $input.subst( :g ,
  1010. / ^(''\d+) ('__') (<[A..Z]>[<[A..Z0..9]> | '_' ]*) ['('|'['] (.+) [')'|']']$/ ,
  1011. -> $/ { @tempStmt[0]= $0; @tempStmt[1]= $1; @tempStmt[2]= $2; @tempStmt[3]= $3; } );
  1012. if (@tempStmt[1] ~~ '__') {
  1013. @WFEcompArgListTemp2[$curIdx2]= @tempStmt[3];
  1014. };
  1015. $curIdx2= $curIdx2 + 1; };
  1016.  
  1017. $tp2= '____';
  1018. $input= @WFEcompArgList[0];
  1019. ## $tp1= $input.subst( :g , / '[' ([<[a..zA..Z0..9]> | '_' ]+) ']'$/ ,
  1020. $tp1= $input.subst( :g , / '[' ('TelService') ']'$/ ,
  1021. -> $/ { $tp2= $0; } );
  1022. if $tp2 ~~ '____' {$tp2= @WFEcompArgList[0];};
  1023.  
  1024. $curIdx= 0; while $curIdx < $temp6 {
  1025. $input= $tp2 ~ '--' ~ "{$curIdx}";
  1026. if %*GOTOARGNAMES{"{$input}"} === Any {
  1027. @WFEcompArgList[$curIdx]= @WFEcompArgListTemp2[$curIdx];
  1028. @WFEcompArgListPreFx[$curIdx]= '____'; }
  1029. else {
  1030. @WFEcompArgList[$curIdx]= %*GOTOARGNAMES{"{$input}"}
  1031. ~ '[' ~ @WFEcompArgListTemp2[$curIdx] ~ ']';
  1032. @WFEcompArgListPreFx[$curIdx]= %*GOTOARGNAMES{"{$input}"}; };
  1033. $curIdx++; };
  1034. $curIdx= $temp6; while $curIdx < $rewriteArgListElems {
  1035. @WFEcompArgListPreFx[$curIdx]= '____';
  1036. $curIdx++; };
  1037. if $runNum > 1 {
  1038. if $rewriteArgListElemsSav > $rewriteArgListElems { $compareMax= $rewriteArgListElems; }
  1039. else { $compareMax= $rewriteArgListElemsSav; };
  1040. };
  1041. $curIdx= 0; while $curIdx < $rewriteArgListElems {
  1042. $entryWFE2= "{@tempLeftBrace[$curIdx]} {@WFEcompArgList[$curIdx]} {@tempRightBrace[$curIdx]}";
  1043. if $runNum == 1 { say " | ARG$curIdx: {trimBrackets($entryWFE2)}" if $debug2; }
  1044. else {
  1045. if $curIdx < $compareMax {
  1046. $entryWFE4= "{@tempLeftBraceSav[$curIdx]} {@WFEcompArgListSav[$curIdx]} {@tempRightBraceSav[$curIdx]}";
  1047. $entryWFE4PreFx= "{@WFEcompArgListSavPreFx[$curIdx]}";
  1048. if $entryWFE2 ~~ $entryWFE4 {
  1049. if $entryWFE4PreFx ~~ '____' {
  1050. say " | ARG$curIdx: .........NO UPDATES. " if $debug2;
  1051. } else {
  1052. say " | ARG$curIdx: .........NO UPDATES: $entryWFE4PreFx" if $debug2;
  1053. };
  1054. } else {
  1055. say " | ARG$curIdx: {trimBrackets($entryWFE2)}" if $debug2;
  1056. $input= $OPsav2;
  1057. $input= @OPstr[1];
  1058. @tempStmt[0]= 'com';
  1059. $tp1= $input.subst( :g , /^('goTo')\d+$/ ,
  1060. -> $/ { @tempStmt[0]= $0; } );
  1061. if @tempStmt[0] ~~ 'goTo' {
  1062. ## say " | " if $debug2;
  1063. say " | {'mmmmmmmmmmmmmmmmmmm'} UPDATED ! {'mmmmmmmmmmmmmmm'} WAS:" if $debug2;
  1064. say " | {trimBrackets($entryWFE4)}" if $debug2;
  1065. say " | " if $debug2;
  1066. };
  1067. };
  1068. } else { say " | ARG$curIdx: {trimBrackets($entryWFE2)}" if $debug2; };
  1069. };
  1070. $curIdx= 1 + $curIdx; };
  1071. $curIdx2= 0; while $curIdx2 < $rewriteArgListElems {
  1072. @tempLeftBraceSav[$curIdx2]= @tempLeftBrace[$curIdx2];
  1073. @tempRightBraceSav[$curIdx2]= @tempRightBrace[$curIdx2];
  1074. @WFEcompArgListSav[$curIdx2]= @WFEcompArgList[$curIdx2];
  1075. @WFEcompArgListSavPreFx[$curIdx2]= @WFEcompArgListPreFx[$curIdx2];
  1076. $curIdx2= 1 + $curIdx2; };
  1077. $rewriteArgListElemsSav= $rewriteArgListElems;
  1078. }
  1079. else {
  1080. if $runNum > 1 {
  1081. if $rewriteArgListElemsSav > $rewriteArgListElems { $compareMax= $rewriteArgListElems; }
  1082. else { $compareMax= $rewriteArgListElemsSav; };
  1083. };
  1084. $curIdx= 0; while $curIdx < $rewriteArgListElems {
  1085. $entryWFE2= "{@tempLeftBrace[$curIdx]} {@WFEcompArgList[$curIdx]} {@tempRightBrace[$curIdx]}";
  1086. if $runNum == 1 { say " | ARG$curIdx: {trimBrackets($entryWFE2)}" if $debug2; }
  1087. else {
  1088. if $curIdx < $compareMax {
  1089. $entryWFE4= "{@tempLeftBraceSav[$curIdx]} {@WFEcompArgListSav[$curIdx]} {@tempRightBraceSav[$curIdx]}";
  1090. if $entryWFE2 ~~ $entryWFE4 {
  1091. say " | ARG$curIdx: <--------SAME AS IN ABOVE DESCEND. " if $debug2;
  1092. } else {
  1093. say " | ARG$curIdx: {trimBrackets($entryWFE2)}" if $debug2;
  1094. };
  1095. } else { say " | ARG$curIdx: {trimBrackets($entryWFE2)}" if $debug2; };
  1096. };
  1097. $curIdx= 1 + $curIdx; };
  1098. $curIdx2= 0; while $curIdx2 < $rewriteArgListElems {
  1099. @tempLeftBraceSav[$curIdx2]= @tempLeftBrace[$curIdx2];
  1100. @tempRightBraceSav[$curIdx2]= @tempRightBrace[$curIdx2];
  1101. @WFEcompArgListSav[$curIdx2]= @WFEcompArgList[$curIdx2];
  1102. @WFEcompArgListSavPreFx[$curIdx2]= @WFEcompArgListPreFx[$curIdx2];
  1103. $curIdx2= 1 + $curIdx2; };
  1104. $rewriteArgListElemsSav= $rewriteArgListElems;
  1105. };
  1106. };
  1107. say " " if $debug4;
  1108. };
  1109. $lastRunNum= $runNum; $runNum++; $continue++;
  1110. if $lastRwcode ~~ $rwcode { if $runNum > 1 { $continue= 0; }; };
  1111. };
  1112.  
  1113. say "\n\n";
  1114. say 'CODES NOW NOT REWRITABLE !';
  1115. say "END OF CODES EXECUTION";
  1116. };
  1117.  
  1118.  
Success #stdin #stdout 10.24s 199312KB
stdin
Standard input is empty
stdout



Original Codes:  
---------------


jumpTo 
<:0:TelService>
[1__CODES
(@@8  
    ( proc :TelService  :0 {::: @@3 :CallSession:Stmt1:Stmt2 :::} )
    ( proc :CallSession :4
    : {:::
    :    : jumpTo 
    :    : ( stepThru1 ( cTerm2 :~2 :~3 [PerEvntActnList] ) <:0:TelService> ) 
    :    : [ ~1 ]
    :    : ( cTerm2 :~2 :~3 [NxtStateMap] )
    : :::}
    )
    ( term [cTerm2 :onhook [dialDigit:4] [PerEvntActnList]] [say(concat:hello[,][ ]:World)] )
    ( term [cTerm2 :offhook :dialDigit6 [PerEvntActnList]] [say(concat:lets[ ]:talk)] )
    ( term [cTerm2 :talking [dialDigit:8] [PerEvntActnList]] [say(concat:seeya[,][ ]:bye)] )
    ( term [cTerm2 :onhook [dialDigit:4] [NxtStateMap]] :offhook )
    ( term [cTerm2 :offhook :dialDigit6 [NxtStateMap]] :talking )
    ( term [cTerm2 :talking [dialDigit:8] [NxtStateMap]] :disconnect )
) ]
[2__CURSTATE :onhook ]
[3__EVENT [dialDigit:4] ]
 
:dialDigit6
[dialDigit:8]
  



Normalized Codes:  
-----------------

jumpTo[@@2[0][TelService]][1__CODES(@@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect]))][2__CURSTATE[onhook]][3__EVENT[dialDigit[4]]][dialDigit6][dialDigit[8]]  






CODES EXECUTION:




HIGH LEVEL DESCEND-BY-DESCEND VIEW OF RW PROGRESS:
(RECURSIVE LEFTMOST-INNERMOST APPLICATIVE REWRITE, TILL CODES NOT REWRITABLE)





"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
( STARTING TREE DESCNND #1: )

zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 6
zzzzzzzzzzzz1   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz4   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input @@2[0][TelService] 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input 1__CODES(@@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect])) 
zzzzzzzzzzzz5    curIdx2 2    tp0 ___    input 2__CURSTATE[onhook] 
zzzzzzzzzzzz5    curIdx2 3    tp0 ___    input 3__EVENT[dialDigit[4]] 
zzzzzzzzzzzz5    curIdx2 4    tp0 ___    input dialDigit6 
zzzzzzzzzzzz5    curIdx2 5    tp0 ___    input dialDigit[8] 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #1:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     jumpTo 
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   [ @@2 :0 :TelService ]
        |  ARG1:   [ 1__CODES ( @@8 (proc :TelService :0 {:::  @@3 :CallSession :Stmt1 :Stmt2  :::})(proc :CallSession :4 {:::  jumpTo(stepThru1 (cTerm2 :~2 :~3 :PerEvntActnList)<:0:TelService>) :~1(cTerm2 :~2 :~3 :NxtStateMap)  :::})(term [cTerm2 :onhook[dialDigit :4] :PerEvntActnList][say(concat :hello[,][ ] :World)])(term [cTerm2 :offhook :dialDigit6 :PerEvntActnList][say(concat :lets[ ] :talk)])(term [cTerm2 :talking[dialDigit :8] :PerEvntActnList][say(concat :seeya[,][ ] :bye)])(term [cTerm2 :onhook[dialDigit :4] :NxtStateMap] :offhook)(term [cTerm2 :offhook :dialDigit6 :NxtStateMap] :talking)(term [cTerm2 :talking[dialDigit :8] :NxtStateMap] :disconnect)) ]
        |  ARG2:   [ 2__CURSTATE :onhook ]
        |  ARG3:   [ 3__EVENT [dialDigit :4] ]
        |  ARG4:   [ dialDigit6 ]
        |  ARG5:   [ dialDigit :8 ]
  




==========================================================================>
( TREE DESCEND #2: )


.mmmmmmm.LEVEL7  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||||  @@2
        |||||||  :0
        |||||||  :TelService
        |||||||  :x0
        |||||||  
        |||||||  =============>
        |||||||  0
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #2:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1(concat :x(0))( @@2 :0 :TelService :x1) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG5:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #3: )


.mmmmmmm.LEVEL7  (type NUM w 0 args)  NOT REWRITABLE:  0
  

.mmmmm.LEVEL5  (type OP5 w 2 args)  RW SUCCESS:
        |||||  concat
        |||||  :x
        |||||  :0
        |||||  
        |||||  ====>   x0
  

.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  @@2
        |||||  :0
        |||||  :TelService
        |||||  :x1
        |||||  
        |||||  =============>
        |||||  TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #3:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1 :x0(TelService) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG5:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #4: )


.mmmmm.LEVEL5  (type OP2 w 0 args)  NOT REWRITABLE:  TelService
  

.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@2
        |||  :0
        |||  :TelService
        |||  :x1
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  TelService
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #4:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( TelService :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG5:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #5: )

zzzzzzzzzzzz0    sr 3    OPvariety OP2    Elems 2
zzzzzzzzzzzz1   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz4   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input x0 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input TelService 

.mmm.LEVEL3  (type OP2 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  TelService
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  @@3 :CallSession :Stmt1 :Stmt2
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #5:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@3 :CallSession :Stmt1 :Stmt2 :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG5:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #6: )


.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@3
        |||  :CallSession
        |||  :Stmt1
        |||  :Stmt2
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  CallSession
        |||  
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #6:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( CallSession :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG5:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #7: )


.mmm.LEVEL3  (type OP2 w 1 args)  NOT REWRITABLE:
        |||  CallSession
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #7:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   [ CallSession :TelService ]
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG5:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #8: )

zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 6
zzzzzzzzzzzz1   tp0 ___   tp1 CallSession    WFEcompArgList0 TelService  
zzzzzzzzzzzz2   input <:::@@3[CallSession][Stmt1][Stmt2]:::>    
zzzzzzzzzzzz3   tempStmt0 @@    
zzzzzzzzzzzz4   tp0 TelService   tp1 CallSession    WFEcompArgList0 TelService  
zzzzzzzzzzzz5    curIdx2 0    tp0 TelService    input TelService 
zzzzzzzzzzzz5    curIdx2 1    tp0 TelService    input 1__CODES(@@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect])) 
zzzzzzzzzzzz6    curIdx2 1    tp0 TelService    GOTOARGNAMES 1__CODES    
zzzzzzzzzzzz5    curIdx2 2    tp0 TelService    input 2__CURSTATE[onhook] 
zzzzzzzzzzzz6    curIdx2 2    tp0 TelService    GOTOARGNAMES 2__CURSTATE    
zzzzzzzzzzzz5    curIdx2 3    tp0 TelService    input 3__EVENT[dialDigit[4]] 
zzzzzzzzzzzz6    curIdx2 3    tp0 TelService    GOTOARGNAMES 3__EVENT    
zzzzzzzzzzzz5    curIdx2 4    tp0 TelService    input dialDigit6 
zzzzzzzzzzzz5    curIdx2 5    tp0 TelService    input dialDigit[8] 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #8:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     CallSession
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 CallSession    tempStmt0 CallSession
        |  ARG0:   [ TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
        |  ARG3:   .........NO UPDATES. 
        |  ARG4:   .........NO UPDATES. 
        |  ARG5:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #9: )


.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  cTerm2
        |||||  :onhook
        |||||  [dialDigit :4]
        |||||  :PerEvntActnList
        |||||  
        |||||  =============>
        |||||  say(concat :hello[,][ ] :World)
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #9:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   ( stepThru1 (say(concat :hello[,][ ] :World))<:0:TelService> )
        |  ARG1:   [ @@8 (proc :TelService :0 {:::  @@3 :CallSession :Stmt1 :Stmt2  :::})(proc :CallSession :4 {:::  jumpTo(stepThru1 (cTerm2 :~2 :~3 :PerEvntActnList)<:0:TelService>) :~1(cTerm2 :~2 :~3 :NxtStateMap)  :::})(term [cTerm2 :onhook[dialDigit :4] :PerEvntActnList][say(concat :hello[,][ ] :World)])(term [cTerm2 :offhook :dialDigit6 :PerEvntActnList][say(concat :lets[ ] :talk)])(term [cTerm2 :talking[dialDigit :8] :PerEvntActnList][say(concat :seeya[,][ ] :bye)])(term [cTerm2 :onhook[dialDigit :4] :NxtStateMap] :offhook)(term [cTerm2 :offhook :dialDigit6 :NxtStateMap] :talking)(term [cTerm2 :talking[dialDigit :8] :NxtStateMap] :disconnect) ]
        |  ARG2:   ( cTerm2 :onhook[dialDigit :4] :NxtStateMap )
        |  ARG3:   [ dialDigit6 ]
        |  ARG4:   [ dialDigit :8 ]
  




==========================================================================>
( TREE DESCEND #10: )


.mmmmmmm.LEVEL7  (type OP5 w 4 args)  RW SUCCESS:
        |||||||  concat
        |||||||  :hello
        |||||||  [,]
        |||||||  [ ]
        |||||||  :World
        |||||||  
        |||||||  ====>   hello, World
  
               ( ****** LEVEL5 ACTION #1:  say  )    hello, World

.mmmmm.LEVEL5  (type OP5 w 1 args)  RW SUCCESS:
        |||||  say
        |||||  [hello, World]
        |||||  
        |||||  ====>   nil
  

.mmm.LEVEL3  (type OP5 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  stepThru1
        |||  :nil
        |||  <:0:TelService>
        |||  
        |||  =============>
        |||  @@2 :0 :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #10:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   ( @@2 :0 :TelService )
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
        |  ARG3:   .........NO UPDATES. 
        |  ARG4:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #11: )


.mmm.LEVEL3  (type OP5 w 2 args)  NOT REWRITABLE:
        |||  @@2
        |||  :0
        |||  :TelService
  

.mmm.LEVEL3  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  cTerm2
        |||  :onhook
        |||  [dialDigit :4]
        |||  :NxtStateMap
        |||  
        |||  =============>
        |||  offhook
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #11:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   [ @@2 :0 :TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   ( offhook )
        |  ARG3:   .........NO UPDATES. 
        |  ARG4:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #12: )


.mmm.LEVEL3  (type OP2 w 0 args)  NOT REWRITABLE:  offhook
  
zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 5
zzzzzzzzzzzz1   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz4   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input @@2[0][TelService] 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input @@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect]) 
zzzzzzzzzzzz5    curIdx2 2    tp0 ___    input offhook 
zzzzzzzzzzzz5    curIdx2 3    tp0 ___    input dialDigit6 
zzzzzzzzzzzz5    curIdx2 4    tp0 ___    input dialDigit[8] 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #12:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   .........NO UPDATES. 
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   [ offhook ]
        |  ARG3:   .........NO UPDATES. 
        |  ARG4:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #13: )


.mmmmmmm.LEVEL7  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||||  @@2
        |||||||  :0
        |||||||  :TelService
        |||||||  :x0
        |||||||  
        |||||||  =============>
        |||||||  0
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #13:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1(concat :x(0))( @@2 :0 :TelService :x1) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #14: )


.mmmmmmm.LEVEL7  (type NUM w 0 args)  NOT REWRITABLE:  0
  

.mmmmm.LEVEL5  (type OP5 w 2 args)  RW SUCCESS:
        |||||  concat
        |||||  :x
        |||||  :0
        |||||  
        |||||  ====>   x0
  

.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  @@2
        |||||  :0
        |||||  :TelService
        |||||  :x1
        |||||  
        |||||  =============>
        |||||  TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #14:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1 :x0(TelService) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #15: )


.mmmmm.LEVEL5  (type OP2 w 0 args)  NOT REWRITABLE:  TelService
  

.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@2
        |||  :0
        |||  :TelService
        |||  :x1
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  TelService
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #15:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( TelService :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #16: )

zzzzzzzzzzzz0    sr 3    OPvariety OP2    Elems 2
zzzzzzzzzzzz1   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz4   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input x0 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input TelService 

.mmm.LEVEL3  (type OP2 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  TelService
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  @@3 :CallSession :Stmt1 :Stmt2
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #16:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@3 :CallSession :Stmt1 :Stmt2 :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #17: )


.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@3
        |||  :CallSession
        |||  :Stmt1
        |||  :Stmt2
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  CallSession
        |||  
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #17:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( CallSession :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #18: )


.mmm.LEVEL3  (type OP2 w 1 args)  NOT REWRITABLE:
        |||  CallSession
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #18:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   [ CallSession :TelService ]
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG4:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #19: )

zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 5
zzzzzzzzzzzz1   tp0 ___   tp1 CallSession    WFEcompArgList0 TelService  
zzzzzzzzzzzz2   input <:::@@3[CallSession][Stmt1][Stmt2]:::>    
zzzzzzzzzzzz3   tempStmt0 @@    
zzzzzzzzzzzz4   tp0 TelService   tp1 CallSession    WFEcompArgList0 TelService  
zzzzzzzzzzzz5    curIdx2 0    tp0 TelService    input TelService 
zzzzzzzzzzzz5    curIdx2 1    tp0 TelService    input @@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect]) 
zzzzzzzzzzzz5    curIdx2 2    tp0 TelService    input offhook 
zzzzzzzzzzzz5    curIdx2 3    tp0 TelService    input dialDigit6 
zzzzzzzzzzzz5    curIdx2 4    tp0 TelService    input dialDigit[8] 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #19:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     CallSession
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 CallSession    tempStmt0 CallSession
        |  ARG0:   [ TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
        |  ARG3:   .........NO UPDATES. 
        |  ARG4:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #20: )


.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  cTerm2
        |||||  :offhook
        |||||  :dialDigit6
        |||||  :PerEvntActnList
        |||||  
        |||||  =============>
        |||||  say(concat :lets[ ] :talk)
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #20:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   ( stepThru1 (say(concat :lets[ ] :talk))<:0:TelService> )
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   ( cTerm2 :offhook :dialDigit6 :NxtStateMap )
        |  ARG3:   [ dialDigit :8 ]
  




==========================================================================>
( TREE DESCEND #21: )


.mmmmmmm.LEVEL7  (type OP5 w 3 args)  RW SUCCESS:
        |||||||  concat
        |||||||  :lets
        |||||||  [ ]
        |||||||  :talk
        |||||||  
        |||||||  ====>   lets talk
  
               ( ****** LEVEL5 ACTION #2:  say  )    lets talk

.mmmmm.LEVEL5  (type OP5 w 1 args)  RW SUCCESS:
        |||||  say
        |||||  [lets talk]
        |||||  
        |||||  ====>   nil
  

.mmm.LEVEL3  (type OP5 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  stepThru1
        |||  :nil
        |||  <:0:TelService>
        |||  
        |||  =============>
        |||  @@2 :0 :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #21:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   ( @@2 :0 :TelService )
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
        |  ARG3:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #22: )


.mmm.LEVEL3  (type OP5 w 2 args)  NOT REWRITABLE:
        |||  @@2
        |||  :0
        |||  :TelService
  

.mmm.LEVEL3  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  cTerm2
        |||  :offhook
        |||  :dialDigit6
        |||  :NxtStateMap
        |||  
        |||  =============>
        |||  talking
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #22:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   [ @@2 :0 :TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   ( talking )
        |  ARG3:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #23: )


.mmm.LEVEL3  (type OP2 w 0 args)  NOT REWRITABLE:  talking
  
zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 4
zzzzzzzzzzzz1   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz4   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input @@2[0][TelService] 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input @@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect]) 
zzzzzzzzzzzz5    curIdx2 2    tp0 ___    input talking 
zzzzzzzzzzzz5    curIdx2 3    tp0 ___    input dialDigit[8] 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #23:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   .........NO UPDATES. 
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   [ talking ]
        |  ARG3:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #24: )


.mmmmmmm.LEVEL7  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||||  @@2
        |||||||  :0
        |||||||  :TelService
        |||||||  :x0
        |||||||  
        |||||||  =============>
        |||||||  0
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #24:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1(concat :x(0))( @@2 :0 :TelService :x1) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #25: )


.mmmmmmm.LEVEL7  (type NUM w 0 args)  NOT REWRITABLE:  0
  

.mmmmm.LEVEL5  (type OP5 w 2 args)  RW SUCCESS:
        |||||  concat
        |||||  :x
        |||||  :0
        |||||  
        |||||  ====>   x0
  

.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  @@2
        |||||  :0
        |||||  :TelService
        |||||  :x1
        |||||  
        |||||  =============>
        |||||  TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #25:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1 :x0(TelService) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #26: )


.mmmmm.LEVEL5  (type OP2 w 0 args)  NOT REWRITABLE:  TelService
  

.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@2
        |||  :0
        |||  :TelService
        |||  :x1
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  TelService
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #26:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( TelService :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #27: )

zzzzzzzzzzzz0    sr 3    OPvariety OP2    Elems 2
zzzzzzzzzzzz1   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz4   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input x0 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input TelService 

.mmm.LEVEL3  (type OP2 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  TelService
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  @@3 :CallSession :Stmt1 :Stmt2
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #27:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@3 :CallSession :Stmt1 :Stmt2 :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #28: )


.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@3
        |||  :CallSession
        |||  :Stmt1
        |||  :Stmt2
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  CallSession
        |||  
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #28:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( CallSession :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #29: )


.mmm.LEVEL3  (type OP2 w 1 args)  NOT REWRITABLE:
        |||  CallSession
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #29:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   [ CallSession :TelService ]
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG3:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #30: )

zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 4
zzzzzzzzzzzz1   tp0 ___   tp1 CallSession    WFEcompArgList0 TelService  
zzzzzzzzzzzz2   input <:::@@3[CallSession][Stmt1][Stmt2]:::>    
zzzzzzzzzzzz3   tempStmt0 @@    
zzzzzzzzzzzz4   tp0 TelService   tp1 CallSession    WFEcompArgList0 TelService  
zzzzzzzzzzzz5    curIdx2 0    tp0 TelService    input TelService 
zzzzzzzzzzzz5    curIdx2 1    tp0 TelService    input @@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect]) 
zzzzzzzzzzzz5    curIdx2 2    tp0 TelService    input talking 
zzzzzzzzzzzz5    curIdx2 3    tp0 TelService    input dialDigit[8] 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #30:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     CallSession
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 CallSession    tempStmt0 CallSession
        |  ARG0:   [ TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
        |  ARG3:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #31: )


.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  cTerm2
        |||||  :talking
        |||||  [dialDigit :8]
        |||||  :PerEvntActnList
        |||||  
        |||||  =============>
        |||||  say(concat :seeya[,][ ] :bye)
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #31:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   ( stepThru1 (say(concat :seeya[,][ ] :bye))<:0:TelService> )
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   ( cTerm2 :talking[dialDigit :8] :NxtStateMap )
  




==========================================================================>
( TREE DESCEND #32: )


.mmmmmmm.LEVEL7  (type OP5 w 4 args)  RW SUCCESS:
        |||||||  concat
        |||||||  :seeya
        |||||||  [,]
        |||||||  [ ]
        |||||||  :bye
        |||||||  
        |||||||  ====>   seeya, bye
  
               ( ****** LEVEL5 ACTION #3:  say  )    seeya, bye

.mmmmm.LEVEL5  (type OP5 w 1 args)  RW SUCCESS:
        |||||  say
        |||||  [seeya, bye]
        |||||  
        |||||  ====>   nil
  

.mmm.LEVEL3  (type OP5 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  stepThru1
        |||  :nil
        |||  <:0:TelService>
        |||  
        |||  =============>
        |||  @@2 :0 :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #32:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   ( @@2 :0 :TelService )
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
  




==========================================================================>
( TREE DESCEND #33: )


.mmm.LEVEL3  (type OP5 w 2 args)  NOT REWRITABLE:
        |||  @@2
        |||  :0
        |||  :TelService
  

.mmm.LEVEL3  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  cTerm2
        |||  :talking
        |||  [dialDigit :8]
        |||  :NxtStateMap
        |||  
        |||  =============>
        |||  disconnect
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #33:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   [ @@2 :0 :TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   ( disconnect )
  




==========================================================================>
( TREE DESCEND #34: )


.mmm.LEVEL3  (type OP2 w 0 args)  NOT REWRITABLE:  disconnect
  
zzzzzzzzzzzz0    sr 1    OPvariety OP2    Elems 3
zzzzzzzzzzzz1   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz4   tp0 ___   tp1 jumpTo    WFEcompArgList0 @@2[0][TelService]  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input @@2[0][TelService] 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input @@8(proc[TelService][0][<:::@@3[CallSession][Stmt1][Stmt2]:::>])(proc[CallSession][4][<:::jumpTo(stepThru1(cTerm2[~2][~3][PerEvntActnList])[@@2[0][TelService]])[~1](cTerm2[~2][~3][NxtStateMap]):::>])(term[cTerm2[onhook][dialDigit[4]][PerEvntActnList]][say(concat[hello][,][%][World])])(term[cTerm2[offhook][dialDigit6][PerEvntActnList]][say(concat[lets][%][talk])])(term[cTerm2[talking][dialDigit[8]][PerEvntActnList]][say(concat[seeya][,][%][bye])])(term[cTerm2[onhook][dialDigit[4]][NxtStateMap]][offhook])(term[cTerm2[offhook][dialDigit6][NxtStateMap]][talking])(term[cTerm2[talking][dialDigit[8]][NxtStateMap]][disconnect]) 
zzzzzzzzzzzz5    curIdx2 2    tp0 ___    input disconnect 
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #34:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  jumpTo
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 jumpTo    tempStmt0 jumpTo
        |  ARG0:   .........NO UPDATES. 
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   [ disconnect ]
  




==========================================================================>
( TREE DESCEND #35: )


.mmmmmmm.LEVEL7  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||||  @@2
        |||||||  :0
        |||||||  :TelService
        |||||||  :x0
        |||||||  
        |||||||  =============>
        |||||||  0
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #35:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1(concat :x(0))( @@2 :0 :TelService :x1) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #36: )


.mmmmmmm.LEVEL7  (type NUM w 0 args)  NOT REWRITABLE:  0
  

.mmmmm.LEVEL5  (type OP5 w 2 args)  RW SUCCESS:
        |||||  concat
        |||||  :x
        |||||  :0
        |||||  
        |||||  ====>   x0
  

.mmmmm.LEVEL5  (type OP5 w 3 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||||  @@2
        |||||  :0
        |||||  :TelService
        |||||  :x1
        |||||  
        |||||  =============>
        |||||  TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #36:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@2 :0 :TelService :x1 :x0(TelService) )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #37: )


.mmmmm.LEVEL5  (type OP2 w 0 args)  NOT REWRITABLE:  TelService
  

.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@2
        |||  :0
        |||  :TelService
        |||  :x1
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  TelService
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #37:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( TelService :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #38: )

zzzzzzzzzzzz0    sr 3    OPvariety OP2    Elems 2
zzzzzzzzzzzz1   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz4   tp0 ___   tp1 TelService    WFEcompArgList0 x0  
zzzzzzzzzzzz5    curIdx2 0    tp0 ___    input x0 
zzzzzzzzzzzz5    curIdx2 1    tp0 ___    input TelService 

.mmm.LEVEL3  (type OP2 w 2 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  TelService
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  @@3 :CallSession :Stmt1 :Stmt2
        |||  
        |||  :x0
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #38:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( @@3 :CallSession :Stmt1 :Stmt2 :x0 :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #39: )


.mmm.LEVEL3  (type OP5 w 5 args)  EXPANDING RW - NEED NEW DESCEND NOW:
        |||  @@3
        |||  :CallSession
        |||  :Stmt1
        |||  :Stmt2
        |||  :x0
        |||  :TelService
        |||  
        |||  =============>
        |||  CallSession
        |||  
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #39:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   ( CallSession :TelService )
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #40: )


.mmm.LEVEL3  (type OP2 w 1 args)  NOT REWRITABLE:
        |||  CallSession
        |||  :TelService
  
 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #40:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     <--------SAME AS IN ABOVE DESCEND:  id
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 id    tempStmt0 mmm
        |  ARG0:   [ CallSession :TelService ]
        |  ARG1:   <--------SAME AS IN ABOVE DESCEND. 
        |  ARG2:   <--------SAME AS IN ABOVE DESCEND. 
  




==========================================================================>
( TREE DESCEND #41: )

 
.m.LEVEL1  AT ENTRY OF OUTERMOST RW ATTEMPT IN CURRENT DESCEND #41:
        |  """""""""""""""""""""""""""""""""""""""""""""""""""""""
        |  OP:     CallSession
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm1   @OPstr1 CallSession    tempStmt0 CallSession
        |  ARG0:   [ TelService ]
        |  ARG1:   .........NO UPDATES. 
        |  ARG2:   .........NO UPDATES. 
  



CODES NOW NOT REWRITABLE !
END OF CODES EXECUTION