Download - Der Parser-Generator ANTLR4
DER PARSER-
GENERATOR ANTLR4Eine praktische Einführung ins Sprachen-Basteln
Fabian Deitelhoff
FDeitelhoff
http://www.fabiandeitelhoff.de
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
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
08.05.2017 Der Parser-Generator ANTLR4 4
𝐺 = (𝑉, ∑, 𝑃, 𝑆)
08.05.2017 Der Parser-Generator ANTLR4 5
G = (N, T, P, S)
Nichtterminalsymbole
Terminalsymbole
Startregel
Produktionen
Formale Grammatik
08.05.2017 Der Parser-Generator ANTLR4 6
static void Main(string[] args)
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
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
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
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
Syntax von ANTLR4
08.05.2017 Der Parser-Generator ANTLR4 11
grammar Name;
nichtterminalA
: TOKEN1 nichtterminalB TOKEN2
;
Demo
Verarbeiten eines Dateiformats
08.05.2017 Der Parser-Generator ANTLR4 12
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
AST-Durchlauf
• CSV Inhalt
Vorname;Nachname;Alter
"Fabian";"Deitelhoff";34
08.05.2017 Der Parser-Generator ANTLR4 14
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
Listener
08.05.2017 Der Parser-Generator ANTLR4 16
Parser
08.05.2017 Der Parser-Generator ANTLR4 17
Vielen Dank für die Aufmerksamkeit!
Der Parser-Generator ANTLR4 1808.05.2017