Der Parser-Generator ANTLR4

Preview:

Citation preview

DER PARSER-

GENERATOR ANTLR4Eine praktische Einführung ins Sprachen-Basteln

Fabian Deitelhoff

FDeitelhoff

http://www.fabiandeitelhoff.de

Fabian@FabianDeitelhoff.de

Vorstellung

aus Dortmund (Aplerbeck)

08.05.2017 Der Parser-Generator ANTLR4 2

FDeitelhoff

http://www.fabiandeitelhoff.de

Fabian@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

Recommended