Ich möchte Antlr4 verwenden, um einige Dateien in meiner C# -Anwendung zu analysieren. Ich bin in der Lage, die Parser- und Lexer-Dateien zu generieren, soweit ich meine Grammatik angegeben habe. Jetzt möchte ich die Dateien einlesen und den Parser und Lexer auf sie anwenden. Ich habe nach einer Dokumentation gesucht, wie das geht, aber ich komme zu kurz. Ich habe einige alte Beispiele mit früheren Versionen von Antlr gefunden, aber sie scheinen nicht für Antlr4 zu funktionieren. Jede Hilfe wäre willkommen. Vielen Dank.Antlr4 C# -Anwendung Tutorial/Beispiel
12
A
Antwort
10
versuchen mit
using (StreamReader fileStream = new StreamReader(fileName)) {
AntlrInputStream inputStream = new AntlrInputStream(fileStream);
SearchLexer lexer = new SearchLexer(inputStream);
CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
SearchParser parser = new SearchParser(commonTokenStream);
parser.RemoveErrorListeners();
parser.AddErrorListener(new ErrorListener()); // add ours
parser.root();
}
22
- in Visual Studio gehen Sie auf Extras -> Erweiterungen und Updates und den Online-Bereich für "ANTLR Language Support" von Sam Harwell suchen.
- Fügen Vorlagen für die kombinierten Grammatiken: Weitere Informationen finden Sie auf dem Dies hat ein paar Dinge GitHub project site
- finden.
- Fügt Syntax-Hervorhebung hinzu
- Fügt ein MSBuild-Ziel für die Grammatik hinzu, um den Parser zu generieren.
- Fügen Vorlagen für die kombinierten Grammatiken: Weitere Informationen finden Sie auf dem Dies hat ein paar Dinge GitHub project site
- In Ihrer Lösung, stellen Sie Ihre Projektstruktur wie folgt auf:
- Lösung
- GrammarProject
- Calculator.g4
- ImplementationProj ect
- GeneratedFiles (alle Dateien in diesem Ordner werden als Links zu Dateien befinden in GrammarProject \ obj \ Debug hinzugefügt)
- CalculatorBaseListener.cs
- CalculatorBaseVisitor.cs
- CalculatorLexer.cs
- CalculatorListener.cs
- RechnerParser.cs
- CalculatorVistor.cs
- MyCalcualtorImplementation.cs
- GeneratedFiles (alle Dateien in diesem Ordner werden als Links zu Dateien befinden in GrammarProject \ obj \ Debug hinzugefügt)
- GrammarProject
- Lösung
- schreiben und Ihre Grammatik Kompilieren.
- In Ihrem Ordner für die Links zu generierten Dateien mit der rechten Maustaste auf den Ordner und klicken Sie auf Hinzufügen -> Vorhandenes Element
- Browsen Sie zu Grammatik-Projekt \ obj \ Debug und wählen Sie alle generierten Parser-Dateien.
- Dieser nächste Schritt ist wichtig. Auf der Schaltfläche Hinzufügen gibt es einen kleinen Dropdown-Pfeil. Klicken Sie auf den Dropdown-Pfeil und dann auf "Als Verknüpfung hinzufügen".
- Dadurch werden die generierten Dateien mithilfe einer symbolischen Verknüpfung anstelle einer direkten Kopie zum Implementierungsprojekt hinzugefügt.
- Dies bietet den zusätzlichen Vorteil, dass Sie die Parser-Dateien nicht entfernen und neu hinzufügen müssen, wenn Sie später Ihre Grammatik ändern müssen.
Als eine Randnotiz, "The Definitive ANTLR 4 Reference" von Terence Parr ist eine hervorragende Ressource zu verstehen, wie ANTLR4 funktioniert und die Differenz Entwicklungsmuster. Alle Beispiele sind in Java, aber die Konzepte gelten sowohl für Java als auch für C#.
0
hier sind eine Probe von ErrorListener
public class ErrorListener : BaseErrorListener
{
public void SyntaxError(IRecognizer recognizer, int offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e)
{
Console.WriteLine("{0}: line {1}/column {2} {3}", e, line, charPositionInLine, msg);
}
}
Verwandte Themen
- 1. Antlr4 C++ Ziel
- 2. ANTLR4 Leistungsproblem
- 3. ANTLR4: Baumkonstruktion
- 4. antlr4 - Standardkontextobjekt
- 5. wie antlr4 Besucher
- 6. ANTLR4: Leer Handhabung
- 7. ANTLR4 Grammatik Ausgabe
- 8. Antlr4 gegenseitige Linksrekursion Fehler
- 9. Antlr4 - Bestellung von Klauseln
- 10. In Antlr4, C#, wird Fehlerbehandlung nicht 4, erwartet gefeuert als
- 11. Antlr4 C# Version: Wo Interpreter.SetCharPositionInLine in Version 4.3
- 12. Antlr4 "Test Rig" und maven
- 13. AnTLR4: SPIEGELSTRICH und Dedent Token
- 14. ANTLR4 Fragment für Parser Regeln
- 15. ANTLR4: Inselgrammatik, Token matching/skipping
- 16. Sip-Uri-Parser mit Antlr4
- 17. Debuggen von Python ANTLR4-Grammatik
- 18. Antlr4 - Leerer Satz im Lexer
- 19. Konvertieren von Antlr3 zu Antlr4
- 20. AnTLR4 seltsames Verhalten in Vorrang
- 21. ANTLR4 JavaScript Target sehr langsam
- 22. Wo sind Baumgrammatiken in ANTLR4?
- 23. ANTLR4 Python Parsing große Dateien
- 24. Bind ANTLR4 Unterregeln einer Regel
- 25. antlr4 mit unreferenced Regel Parsen
- 26. antlr4 does't offensichtlich Baum analysieren
- 27. Java Antlr4 Logikgrammatik erster Ordnung
- 28. Einen String mit ANTLR4 verarbeiten
- 29. ANTLR4 und das Python-Ziel
- 30. Welche ANTLR4-Ausgabesprache läuft am schnellsten?
Gibt es ein Update für Visual Studio 2015? Ich war bisher nicht in der Lage, den ANTLR Language Support für 2015 zu installieren und war auch nicht erfolgreich bei der manuellen Umsetzung (die Projektdokumentation führt Sie durch eine frühere Version, die ich 2015 nicht nutzen kann)) – Brandon
Ausgezeichnet. Habe es auf VS2015 funktioniert. –
Wie man Grammatik zusammensetzt? Ich kompiliere das Projekt, aber es gibt keine CS-Dateien in Obj-Verzeichnis. – Exerion