| Path: | A3_markovgen.rb |
| Last Update: | Wed Feb 15 12:53:40 Westeuropäische Normalzeit 2006 |
Dieses Programm berechnet Markov-Algorithmen. Dazu werden zwei Input-Dateien abgefragt von denen die erste mit der Endung *.alg den Algorithmus enthält (mit einer Zeile pro Regel und ohne überflüssige Blanks) und die zweite mit der Endung *.inp den Text enthält den der Markov-Interpreter bearbeiten soll (eine Zeile, ohne Return oder Blanks). Beide Dateinamen werden ohne Endung eingegeben. Das Programm generiert dann bei erfolgreichem Ablauf folgende Dateien (+<name>+ steht für den Namen der Algorithmus-Datei):
Desweiteren wird der Algorithmus auf die Eingabedatei angewandt und das Ergebnis auf dem Bildschirm (nach dem Algorithmus und dem Ruby-Compile-Quellcode) ausgegeben.
I*->H*
IH->HH
HD->DEH
ED->DE
D->
*I->D*
H->
*->
E->I
III*II
IIIIII
III*II
IIH*II
IHH*II
HHH*II
HHHD*I
HHDEH*I
HDEHEH*I
DEHEHEH*I
EHEHEH*I
EHEHEHD*
EHEHEDEH*
EHEHDEEH*
EHEDEHEEH*
EHDEEHEEH*
EDEHEEHEEH*
DEEHEEHEEH*
EEHEEHEEH*
EEEEHEEH*
EEEEEEH*
EEEEEE*
EEEEEE
IEEEEE
IIEEEE
IIIEEE
IIIIEE
IIIIIE
IIIIII
| Author: | Lars Gerhard, Sebastian Haffner |
Diese Methode ist der Hauptbestandteil des Markov-CompilerCompilers. Sie erhält den Markov-Algorithmus in Textform als Parameter und liefert den Compiler als Ruby-Programm ebenfalls in Textform zurück. Im Wesentlichen werden folgende Bausteine zusammengestellt:
def markovc(input)
if not (input=~/linkeSeite/)==nil
markovc(input.sub!(/linkeSeite/, "rechteSeite")
end
return input
end
Im regulären Ausdruck ‘linkeSeite’ werden die Metazeichen von Ruby (?.|(){+\^$*[]) escapet, also mit vorangestelltem Backslash in den Ausdruck übernommen