Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
|
|
@ -0,0 +1,62 @@
|
|||
program markov_algorithm;
|
||||
magic := false;
|
||||
if command_line(1) = om then
|
||||
print("error: no ruleset file given");
|
||||
stop;
|
||||
elseif command_line(2) = om then
|
||||
print("error: no input string given");
|
||||
stop;
|
||||
end if;
|
||||
|
||||
rules := read_file(command_line(1));
|
||||
|
||||
input := command_line(2);
|
||||
loop do
|
||||
loop for [pat, repl, trm] in rules do
|
||||
if pat in input then
|
||||
input(pat) := repl;
|
||||
if trm then
|
||||
quit;
|
||||
else
|
||||
continue loop do;
|
||||
end if;
|
||||
end if;
|
||||
end loop;
|
||||
quit;
|
||||
end loop;
|
||||
print(input);
|
||||
|
||||
proc read_file(file_name);
|
||||
if (rulefile := open(file_name, "r")) = om then
|
||||
print("error: cannot open ruleset file");
|
||||
stop;
|
||||
end if;
|
||||
|
||||
rules := [];
|
||||
loop doing
|
||||
line := getline(rulefile);
|
||||
while line /= om do
|
||||
rule := parse_rule(line);
|
||||
if rule /= om then rules with:= rule; end if;
|
||||
end loop;
|
||||
return rules;
|
||||
end proc;
|
||||
|
||||
proc parse_rule(rule);
|
||||
if rule(1) = "#" then return om; end if; $ comment
|
||||
if " -> " notin rule then return om; end if; $ not a rule
|
||||
|
||||
[s, e] := mark(rule, " -> ");
|
||||
pattern := rule(..s-1);
|
||||
repl := rule(e+1..);
|
||||
|
||||
whitespace := "\t\r\n ";
|
||||
span(pattern, whitespace);
|
||||
rspan(pattern, whitespace);
|
||||
span(repl, whitespace);
|
||||
rspan(repl, whitespace);
|
||||
|
||||
trm := match(repl, ".") /= "";
|
||||
return [pattern, repl, trm];
|
||||
end proc;
|
||||
end program;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
import "/ioutil" for FileUtil, File
|
||||
import "/pattern" for Pattern
|
||||
import "./ioutil" for FileUtil, File
|
||||
import "./pattern" for Pattern
|
||||
|
||||
var lb = FileUtil.lineBreak
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue