27 lines
713 B
Plaintext
27 lines
713 B
Plaintext
fcn parseRuleSet(lines){
|
|
if(vm.numArgs>1) lines=vm.arglist; // lines or object
|
|
ks:=L(); vs:=L();
|
|
foreach line in (lines){
|
|
if(line[0]=="#") continue; // nuke <comment>
|
|
pattern,replacement:=line.replace("\t"," ")
|
|
.split(" -> ",1).apply("strip");
|
|
ks.append(pattern); vs.append(replacement);
|
|
}
|
|
return(ks,vs);
|
|
}
|
|
|
|
fcn markov(text,rules){
|
|
ks,vs:=rules; eks:=ks.enumerate();
|
|
do{ go:=False;
|
|
foreach n,k in (eks){
|
|
if (Void!=text.find(k)){
|
|
if (Void==(v:=vs[n])) return(text);
|
|
if (v[0,1]==".") v=v[1,*] else go=True;
|
|
text=text.replace(k,v,1);
|
|
break; // restart after every rule application, unless terminating
|
|
}
|
|
}
|
|
}while(go);
|
|
text
|
|
}
|