Gibt es einen solchen Generator?Parser-Generator, der C# mit einer BNF-Grammatik ausgibt?
Antwort
Normalerweise sind BNF-Grammatiken zu zweideutig. ANTLR ist wahrscheinlich gut für das, was Sie suchen.
Die Visual Studio SDK wird tatsächlich mit Lexer und Parser Generation Tools ausgeliefert. Diese heißen MPPG und MPLex und sind Teil des Managed Babel Pakets. Während die Absicht, sie mit dem SDK zu bündeln, darin besteht, Spracherweiterungen für Visual Studio zu entwickeln, sind sie perfekt zum Erzeugen allgemeiner AST-emittierender Parser geeignet.
MPLex und MPPG basieren auf GPLEX und GPPG (Projekte der Queensland University of Technology) und werden in ähnlicher Weise wie Lex und Yacc verwendet. Das SDK enthält auch MSBuild-Aktionen, um die Parser-Generierung zu einem Teil des regulären Build-Prozesses zu machen.
Hier ist ein Screen mplex und MPPG in Aktion zeigt:
http://msdn.microsoft.com/en-us/vstudio/cc837016.aspx
Der Link scheint gebrochen zu sein. –
Scheint so, als hätte Microsoft vor einiger Zeit Microsoft Managed Babel eingestellt. An dieser Stelle würde ich wahrscheinlich mit FsLex und FsYacc (http://fsprojects.github.io/FsLexJacc/) gehen. Es basiert auf F #, aber es kompiliert zu einer regulären .NET-Assembly und kann von einem C# -Projekt verwendet werden, wenn Sie dies wünschen. –
Ich würde Ihnen empfehlen, diese Unterbrechung zu untersuchen und Ihre Antwort tief zu bearbeiten, sagen, dass von diesem zu diesem Jahr VS SDK enthielt und jetzt dies und das geschieht. Die Leute werden Ihre Antwort in den nächsten Jahren mehrmals betrachten. –
- 1. C - fscanf, Format ausgibt
- 2. wie der Browser 'span' ausgibt?
- 3. Refactoring PHP-Code, der CSV mit Formeln ausgibt
- 4. ggplot Histogramm Code ausgibt
- 5. Wie man Befehle innerhalb einer Schleife ausgibt?
- 6. Wann ist es praktisch, einen Parsergenerator zu verwenden?
- 7. SQL Server 2005 Abfrage ausgibt
- 8. Python: Wie man Cookies einer mechanize.Browser-Instanz ausgibt?
- 9. Wie man jede Zeile in einer Datei ausgibt python
- 10. Wie man sklearn standardscaler ausgibt
- 11. PolymerJS: Wie man Modelldaten ausgibt?
- 12. drupal ------ wie man es ausgibt
- 13. PHP imagejpeg Funktion ausgibt, nicht ein Bild
- 14. Verhindern, dass UIButton Berührungsereignisse ausgibt
- 15. Finden der Primzahl einer Ganzzahl mit C++
- 16. Warum der folgende C++ - Code "schlechte Daten" ausgibt, versuche es erneut "?
- 17. WordPress - Wie erstelle ich einen Shortcode, der einen CPT ausgibt
- 18. Wie zu verfolgen, wenn ein bestimmter Prozess Ausnahme ausgibt, mit Windows-Dienst in C#
- 19. Prevent print() ausgibt Liste Indizes in R
- 20. wie die Reihenfolge zu beheben, in der mein Programm ausgibt?
- 21. Destruktor einer Klasse C mit Mitgliedern der Zeiger C
- 22. Wie man angularjs Filter erstellt, der HTML ausgibt
- 23. tfsbuild --- Wie man 2 verschiedene Quellen ausgibt
- 24. Java - Erkennen, ob die Anwendung Sound ausgibt
- 25. Erstellen eines Webservers mit Flask, der etwas ausgibt, das für eine GET-Anforderung verfügbar ist
- 26. Warum Bower JSON an die Befehlszeile ausgibt
- 27. Wie erstellt man einen Stream, der nur dann einen Wert ausgibt, wenn ein anderer Stream einen Wert ausgibt?
- 28. Wie verhindert werden, dass CMake ausgibt/IMPLIB
- 29. Wie man den Rückgabewert auf einer klassenbasierten Methode mit ocmock ausgibt
- 30. Yeoman generator.fs.copyTpl - Wie man Literal ausgibt '<%'
Es scheint, dass Sie Recht haben. Ich habe das gerade irgendwo im Netz gelesen: "If-then-else kann nicht eindeutig in einer kontextfreien, prioritäts-/prädikatfreien Grammatik, wie EBNF" – ilitirit