Ich schreibe einen Simulator und würde gerne Studien durchführen, indem ich viele Instanzen des Simulators mit verschiedenen Befehlszeilenargumenten aufrufen würde. Ich habe gelesen this Frage und mehrere andere, und sie scheinen nah, aber ich bin eigentlich nicht auf der Suche nach zufälligen Daten eine bestimmte Regex erfüllen, würde ich die alle Zeichenfolgen, die die Regex übereinstimmen. Ein Beispiel Eingabedatei würde wie folgt aussehen:Regex-ähnliche Syntax oder CFG zum Generieren eines kartesischen Produkts von verketteten String-Variablen und Literalen
myprogram.{version1|version2} -arg1 {1|2|4} {-arg2|}
oder:
myprogram.{0} -arg1 {1} {2}
0: "version1" "version2"
1: "1" "2" "4"
2: "-arg2" ""
und produzieren würde:
myprogram.version1 -arg1 1 -arg2
myprogram.version1 -arg1 1
myprogram.version1 -arg1 2 -arg2
myprogram.version1 -arg1 2
myprogram.version1 -arg1 4 -arg2
myprogram.version1 -arg1 4
myprogram.version2 -arg1 1 -arg2
myprogram.version2 -arg1 1
myprogram.version2 -arg1 2 -arg2
myprogram.version2 -arg1 2
myprogram.version2 -arg1 4 -arg2
myprogram.version2 -arg1 4
ich so etwas wie dies könnte mir vorstellen, bereits existiert, ich habe gerade don‘ Ich kenne den richtigen Suchbegriff. Jede Hilfe würde sehr geschätzt werden. Ich kann eine abstrakte Technik oder einen Algorithmus selbst implementieren, wenn es sein muss, aber wenn es ein bereits existierendes Werkzeug ist, würde ich es vorziehen, dass es frei ist (zumindest wie in Bier) und unter Linux läuft.
Ich weiß, dass ich wahrscheinlich einige Details verlasse und bei Bedarf genauer auf die entsprechenden Dinge eingehen kann, anstatt Leute mit vielen Details im Voraus zu überschwemmen. Es ist durchaus möglich, dass ich dies falsch mache, und ich bin zu allen Lösungen willkommen, auch wenn sie mein Problem auf andere Weise lösen.
Am wichtigsten, diese Lösung sollte nicht erfordern, dass ich zusätzlichen Parsing-Code schreibe, wenn ich dem "Cross-Produkt" von Strings, die ich generiere, weitere Argumentoptionen hinzufügen möchte. Ich habe bereits ein Perl-Skript, das dies mit einer Reihe von verschachtelten for
Schleifen über jede "Variable" macht, die jedes Mal geändert werden muss, wenn ich die Anzahl oder Art der Variablen ändere.
Vielen Dank!Das funktioniert gut für meinen aktuellen Anwendungsfall, und wenn es an der Zeit ist, Rekursion zur Syntax hinzuzufügen, höre ich auf, Python zu lernen und benutze es als meine "Hallo Welt" (es sei denn, Sie sind gelangweilt;) –