der parser-generator antlr4
TRANSCRIPT
![Page 1: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/1.jpg)
DER PARSER-
GENERATOR ANTLR4Eine praktische Einführung ins Sprachen-Basteln
Fabian Deitelhoff
FDeitelhoff
http://www.fabiandeitelhoff.de
![Page 2: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/2.jpg)
Vorstellung
aus Dortmund (Aplerbeck)
08.05.2017 Der Parser-Generator ANTLR4 2
FDeitelhoff
http://www.fabiandeitelhoff.de
Doktorand, Autor, Blogger
Robotik, Programmiersprachen, Sprachdesign,
Programmieren Lernen, Programmierunterstützungen, IDEs, Eye-Tracking
![Page 3: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/3.jpg)
Formale Grammatik
• Formale Sprachen als Basis
• Sind abstrakte Sprachen
• Bestehen aus einer Menge von Wörtern über einem Alphabet
• „Gegensatz“ zu natürlichen Sprachen
Grundlage für den Compilerbau
Kontextfreie Grammatiken
08.05.2017 Der Parser-Generator ANTLR4 3
![Page 4: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/4.jpg)
08.05.2017 Der Parser-Generator ANTLR4 4
![Page 5: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/5.jpg)
𝐺 = (𝑉, ∑, 𝑃, 𝑆)
08.05.2017 Der Parser-Generator ANTLR4 5
G = (N, T, P, S)
Nichtterminalsymbole
Terminalsymbole
Startregel
Produktionen
![Page 6: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/6.jpg)
Formale Grammatik
08.05.2017 Der Parser-Generator ANTLR4 6
static void Main(string[] args)
![Page 7: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/7.jpg)
Parser-Generatoren
• Spezifikation zu Parser
• Spezifikation ist eine Grammatik
• Scanner zur Symbolerkennung wird ebenfalls erzeugt
• Eine breite Auswahl
• JavaCC
• Coco/R
• ANTLR
• yacc
08.05.2017 Der Parser-Generator ANTLR4 7
![Page 8: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/8.jpg)
ANTLR
• ANother Tool for Language Recognition
• Parser Generator
• Lesen
• Verarbeiten
• Ausführen
• Übersetzen
• Grundlage ist eine Grammatik
• Wird in eine Zielsprache übersetzt (Targets)
• Java, C#, Python, JavaScript, Typescript, Go, C++, Swift, …
08.05.2017 Der Parser-Generator ANTLR4 8
![Page 9: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/9.jpg)
ANTLR
• ANTLR ist von Terence Parr
„ANTLR v4 is exactly what I want in a parser generator, so I
can finally get back to the problem I was originally trying to
solve in the 1980s. Now, if I could just remember what that
was.”
Professor of computer science and analytics
(University of San Francisco)
08.05.2017 Der Parser-Generator ANTLR4 9
![Page 10: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/10.jpg)
Einsatzzwecke
• Domain Specific Languages (DSLs)
• General Purpose Languages (GPLs)
• Inselgrammatiken
• Spezifikationen in Code gießen
• …
Nicht alles lässt sich damit lösen!
08.05.2017 Der Parser-Generator ANTLR4 10
![Page 11: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/11.jpg)
Syntax von ANTLR4
08.05.2017 Der Parser-Generator ANTLR4 11
grammar Name;
nichtterminalA
: TOKEN1 nichtterminalB TOKEN2
;
![Page 12: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/12.jpg)
Demo
Verarbeiten eines Dateiformats
08.05.2017 Der Parser-Generator ANTLR4 12
![Page 13: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/13.jpg)
Ergebnisse nutzen
• ANTLR übernimmt für uns…
• … das Zerlegen der Eingaben (Tokenizer)
• … die Einhaltung einer Grammatik (Parser)
• … die Umwandlung in einen Baum (AST)
• … den Durchlauf durch diesen Baum
• … Fehlerbehandlung und Reporting
• Aber wie die Ergebnisse weiterverarbeiten?
08.05.2017 Der Parser-Generator ANTLR4 13
![Page 14: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/14.jpg)
AST-Durchlauf
• CSV Inhalt
Vorname;Nachname;Alter
"Fabian";"Deitelhoff";34
08.05.2017 Der Parser-Generator ANTLR4 14
![Page 15: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/15.jpg)
AST-Durchlauf
08.05.2017 Der Parser-Generator ANTLR4 15
• Tiefensuche (Depth-First) Durchlauf durch den AST
• Erst ganz links und dann von links nach rechts
![Page 16: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/16.jpg)
Listener
08.05.2017 Der Parser-Generator ANTLR4 16
![Page 17: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/17.jpg)
Parser
08.05.2017 Der Parser-Generator ANTLR4 17
![Page 18: Der Parser-Generator ANTLR4](https://reader031.vdocuments.mx/reader031/viewer/2022021923/5a6dff407f8b9a90468b4e2b/html5/thumbnails/18.jpg)
Vielen Dank für die Aufmerksamkeit!
Der Parser-Generator ANTLR4 1808.05.2017