June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -1,41 +1,42 @@
|
|||
/*REXX program executes a Markov algorithm(s) against specified entries. */
|
||||
parse arg low high . /*allows which ruleset to process. */
|
||||
if low=='' | low==',' then low=1 /*Not specified? Then use the default.*/
|
||||
if high=='' | high==',' then high=6 /* " " " " " " */
|
||||
tellE=low<0; tellR=high<0 /*flags: used to display file contents.*/
|
||||
/*REXX program executes a Markov algorithm(s) against specified entries. */
|
||||
parse arg low high . /*allows which ruleset to process. */
|
||||
if low=='' | low=="," then low=1 /*Not specified? Then use the default.*/
|
||||
if high=='' | high=="," then high=6 /* " " " " " " */
|
||||
tellE= low<0; tellR= high<0 /*flags: used to display file contents.*/
|
||||
call readEntry
|
||||
do j=abs(low) to abs(high) /*process each of these rulesets. */
|
||||
call readRules j /*read a particular ruleset. */
|
||||
call execRules j /*execute " " " */
|
||||
say 'result for ruleset' j"≡"!.j
|
||||
end /*j*/
|
||||
exit /*stick a fork in it, we're all done. */
|
||||
/*────────────────────────────────────────────────────────────────────────────*/
|
||||
execRules: parse arg q .; if tellE | tellR then say /*a blank line*/
|
||||
do f=1
|
||||
do k=1 while @.k\==''; if left(@.k,1)=='#' | @.k='' then iterate
|
||||
parse var @.k a ' ->' b; a=strip(a); b=strip(b)
|
||||
fullstop= left(b,1)=='.' /*is this a "fullstop" rule? */
|
||||
if fullstop then b=substr(b,2) /*purify the B part of the rule. */
|
||||
old=!.q /*remember the value before the change.*/
|
||||
!.q=changestr(a, !.q, b) /*implement the ruleset change. */
|
||||
if fullstop then if old\==!.q then return /*should we stop? */
|
||||
if old\==!.q then iterate f /*Has Entry changed? Then start over.*/
|
||||
end /*k*/
|
||||
leave
|
||||
end /*f*/
|
||||
return
|
||||
/*────────────────────────────────────────────────────────────────────────────*/
|
||||
readRules: parse arg ? .; rFID='MARKOV_R.'?; if tellR then say
|
||||
@.= /*placeholder for all the Markov rules.*/
|
||||
do r=1 while lines(rFID)\==0 /*read the input file until End-Of-File*/
|
||||
@.r=linein(rFID); if tellR then say 'ruleSet' ?"."left(r,4)'≡'@.r
|
||||
end /*r*/ /*(above) read and maybe echo the rule.*/
|
||||
return
|
||||
/*────────────────────────────────────────────────────────────────────────────*/
|
||||
readEntry: eFID='MARKOV.ENT'; if tellE then say
|
||||
!.= /*placeholder for all the test entries.*/
|
||||
do e=1 while lines(eFID)\==0 /*read the input file until End-Of-File*/
|
||||
!.e=linein(eFID); if tellE then say 'test entry' e"≡"!.e
|
||||
end /*e*/ /*(above) read and maybe echo the entry*/
|
||||
return
|
||||
do j=abs(low) to abs(high) /*process each of these rulesets. */
|
||||
call readRules j /*read a particular ruleset. */
|
||||
call execRules j /*execute " " " */
|
||||
say 'result for ruleset' j "───►" !.j
|
||||
end /*j*/
|
||||
exit /*stick a fork in it, we're all done. */
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
execRules: parse arg q .; if tellE | tellR then say /*show a blank line?*/
|
||||
do f=1
|
||||
do k=1 while @.k\==''; if left(@.k, 1)=='#' | @.k='' then iterate
|
||||
parse var @.k a ' ->' b /*obtain the A & B parts from rule.*/
|
||||
a=strip(a); b=strip(b) /*strip leading and/or trailing blanks.*/
|
||||
fullstop= left(b, 1)==. /*is this a "fullstop" rule? 1≡yes */
|
||||
if fullstop then b=substr(b, 2) /*purify the B part of the rule. */
|
||||
old=!.q /*remember the value before the change.*/
|
||||
!.q=changestr(a, !.q, b) /*implement the ruleset change. */
|
||||
if fullstop then if old\==!.q then return /*should we stop? */
|
||||
if old\==!.q then iterate f /*Has Entry changed? Then start over.*/
|
||||
end /*k*/
|
||||
return
|
||||
end /*f*/
|
||||
return
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
readEntry: eFID= 'MARKOV.ENT'; if tellE then say /*show a blank line?*/
|
||||
!.= /*placeholder for all the test entries.*/
|
||||
do e=1 while lines(eFID)\==0 /*read the input file until End-Of-File*/
|
||||
!.e=linein(eFID); if tellE then say 'test entry' e "───►" !.e
|
||||
end /*e*/ /* [↑] read and maybe echo the entry. */
|
||||
return
|
||||
/*──────────────────────────────────────────────────────────────────────────────────────*/
|
||||
readRules: parse arg ? .; rFID= 'MARKOV_R.'?; if tellR then say /*show a blank line?*/
|
||||
@.= /*placeholder for all the Markov rules.*/
|
||||
do r=1 while lines(rFID)\==0 /*read the input file until End-Of-File*/
|
||||
@.r=linein(rFID); if tellR then say 'ruleSet' ?"."left(r,4) '───►' @.r
|
||||
end /*r*/ /* [↑] read and maybe echo the rule. */
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue