Ich mache eine Anwendung, wo ich die Syntax jeder Zeile, die einen Befehl mit einem Schlüsselwort als erstes Wort enthält, überprüfen muss.
Wenn die Syntax korrekt ist, muss ich auch den Typ der Variablen überprüfen, die in den Schlüsselwörtern verwendet werden.Parser mit RegEx und XML, in C#
Wie, wenn es ein Druckbefehl:
print "string" < variable < "some another string" //some comments
print\s".*"((\s?<\s?".*")*\s?<\s?(?'string1'\w+))?(\s*//.*)?
Also habe ich die folgende Regex:
\s*[<>]\s*((?'variant'\w+)(\[\d+\])*)
Dies ist alle Worte in Variantengruppe für den Zugriff auf die Variablen zu extrahieren und ihre Art überprüfen .
So hat mein Werkzeug viele Schlüsselwörter und zurzeit schreibe ich grob für jedes Schlüsselwort Regex. Und wenn morgen eine Veränderung stattfindet, würde ich die jeweilige Änderung immer und überall in jedem Keyword ersetzen.
Ich speichere eine Regex für jedes Schlüsselwort in einer XML-Datei. Allerdings war ich interessiert es erweiterbar zu machen, wo die Spezifikationsänderungen sagen morgen also muss ich es nur einmal ändern, und es wäre in allen Orten etwas zu reflektieren, wie ich den Druck regex zu verwandeln: wie diese
print %string% (%<% %string%|%variable%)* %comments%
Jetzt Ich schreibe eine Spezifikation für jedes Schlüsselwort und schreibe die Definition von String, Variable, Kommentare in eine andere Datei, die ihre Regex speichert. Dann schreibe ich einen Parser, der diese Zeichenfolge analysiert und eine Regex-Zeichenfolge für mich erstellt.
Ist das möglich?
Gibt es einen besseren Weg dies zu tun oder gibt es eine Möglichkeit, dies in XML zu tun?