Ich habe als Eingabetextblocks mit Befehlen und Argumenten, einem pro Zeile, wieBeste moderne Textparsing? AKA Wann benutzt man Lex und Yacc?
XYZ ARG1,ARG2,ARG3,...,ARGN
Und ich möchte, um zu überprüfen, dass die Argumente zu XYZ
gut für diesen bestimmten Befehl gebildet werden und führen Sie den richtigen Block Code, wenn sie sind. Es gibt so etwas wie ~ 100 Befehle, von denen einige eine variable Anzahl von Argumenten haben, verschiedene Beziehungen (d. H., Wenn der Befehl XYZ
aufgerufen wurde, dann muss auch der Befehl ABC
aufgerufen werden).
auch Befehle existieren, wie:
COMMAND
XYZ ARG1
BEF ARG1 ARG2
ENDCOMMAND
Es ist wichtig, dass der Text innerhalb COMMAND
und ENDCOMMAND
enthalten ist.
Normalerweise würde ich Lex und Yacc anstelle von Regex verwenden, aber gibt es etwas moderneres? Der Code ist in C# geschrieben. Gibt es etwas in MSDN, das dies tut, anstatt C-Lex und Yacc der alten Schule?
Hmm Ich denke, Sie sind falsch. Ich hätte nur meine C-Parsing-Bibliothek, eine C# -Wrapper-Bibliothek und meine C# -Anwendung. –
Funktioniert das nicht?Danke für die Antwort, aber bitte sag mir, warum das nicht funktioniert. Danke noch einmal. –
Ah ja, Sie könnten tatsächlich den Parser in C machen und ihn mit C# umhüllen. Angenommen, Sie können eine VisualStudio-kompatible Version von LEX/YACC finden. Die Prebuilt von Gnu verwenden generell die Gnu-Bibliotheksformate und benötigen den Gnu-Linker (ld). –