Sie sind auf Seite 1von 30

FORMALE

SPRACHEN
UND COMPILER
– EINFÜHRUNG,
MODUL 1
Dominik Johannes KNOLL

dominik.johannes.knoll@scs.ubbcluj.ro
djknoll.github.io

2020, v2
ÜBER MICH

¡ Geboren in Oberösterreich
¡ Schule, Handwerksausbildung und Studium in Salzburg
¡ 2007 Magister der Angewandten Informatik
“Reinforcement Learning in Neurocontrollers of Simulated and Real Robots”
¡ Arbeit als Informatiker in Italien (2 j.), Schweiz (1 j.), Russland (3 j.)
¡ 2020 Doktorat in Engineering Systems
“Model-based processes and tools for concurrent conceptual design of space systems”
¡ www.linkedin.com/in/djknoll/

2
HINTERGRUND

3
HINTERGRUND ZUM KURS

Theoretische Ingenieurs-
Informatik kunst

Compilerbau

Formale
Sprachen

4
WOZU FORMALE SPRACHEN? WOZU COMPILER?

¡ Formale Sprachen – präzise und eindeutige Beschreibung von Objekten


und Prozessen, maschinen-lesbar
¡ Dateiformate,
¡ Kommunikations-Protokolle,
¡ Algorithmen
¡ Compiler – Interpretation und Verarbeitung von formalen
Beschreibungen
¡ Übersetzung von C-Programm in Prozessorinstruktionen,
¡ Interpretation von JavaScript im Browser 5
WAS IST EIN COMPILER?

Interpreter?
Source code Object code
/ program / program
COMPILER
C, C#, Java, Machine?
JavaScript, Python,
Ruby, PHP

6
COMPILER SIND KOMPLEXE SYSTEME

¡ Programm-Code verwendet Bibliotheken


¡ Verknüpfen zur Kompilierzeit oder vor der Ausführung
¡ Abwägung von Zeit, Speicher, und Verwaltungsaufwand
¡ Ausführungsumgebung
¡ Maschinensprache (Prozessor) oder Zwischensprache
(Virtuelle Maschine)
¡ Interaktion mit Betriebssystem bzw.
Ressourcenverwaltung

Quelle https://ei.uni-paderborn.de/nt/lehre/veranstaltungen/projekt-angewandte-programmierung
ORGANISATORISCHES ZUM KURS

8
Zeit Modul
KURS INHALT KW 40 1. Einführung
KW 41 2. Scanner
KW 42 3. Formale Sprachen
KW 43 4. Reguläre Grammatik, EA
KW 44 5. Reguläre Ausdrücke
KW 45 6. Kontextfreie Grammatiken
KW 46 7. PD Automaten
KW 47 8. Parsing
KW 48 9. LL(1) Parsing
KW 49 10. LR Parsing
KW 50 11. LR Parsing
KW 51 12. LR Parsing
KW 1 13. Generatoren 9
KW 2 14. Turing Maschinen
LITERATUR

¡ Compilers: Principles, Techniques, and Tools (2nd ed.) (2007) A. AHO,


M. LAM, J. ULLMAN, and R. SETHI

¡ Engineering a Compiler (2003,2018) K. COOPER, L. TORCZON

¡ Formale Sprachen, abstrakte Automaten und Compiler (2009) Ch.


WAGENKNECHT, M. HIELSCHER

CREDITS: Kursunterlagen basieren auf denen von Prof. Simona


Motogna, UBB, https://motogna.wordpress.com/courses/ 10
ORGANISATORISCHES

¡ 14 Wochen
¡ Vorlesung – 2 Std./Woche
¡ Seminar – 2 Std./Woche – Anwesenheitspflicht, min. 75%
¡ Labor – 2 Std./Woche – Anwesenheitspflicht, min. 90%

11
BEURTEILUNG
¡ Labor:
- alle Hausaufgaben sind verpflichtend
- nicht mehr als 2 Wochen Verspätung
¡ Seminar:
- Problemlösungen, Antworten, Hausaufgaben
¡ Endnote besteht aus:
5% Aktive Teilnahme an der Vorlesung
+ 15% Seminar
+ 50% Labor 12
+ 30% Schriftliche Prüfung
EINFÜHRUNG

13
A LITTLE BIT OF HISTORY …

Java
1995
C J. Gosling
Pascal 1969 - 1973
Lisp 1968 - 1970 D. Ritchie
1962 N. Wirth
Fortran McCarthy
1954-1957
14
Backus
A MORE DETAILED HISTORY

15

https://javaconceptoftheday.com/history-of-programming-languages/
QUIZ 1

¡ über Vorkenntnisse
¡ https://b.socrative.com/student/
¡ Roomname: DJKNOLL

16
STRUKTUR EINES COMPILERS
Quellcode,
Programm
Analyse
Scanning (lexical
analysis)

Tokens
Parsing (syntactical
analysis)
Fehlerbehandlung

Syntax tree Semantic analysis

Intermediary code
Annotated syntax generation Synthese
tree
Intermediary
Symboltabellen Intermediary code optimization
Objektcode,
Verwaltung code
Programm
Optimized Object code
generation
intermediary code 17
MODUL 1 - SCANNER
SYNTAKTISCHE ANALYSE

18
SCANNER – SYNTAX ANALYSE

Definition = treats the source program as a sequence of characters,


detect lexical TOKENS, classify and codify them

INPUT: source program à OUTPUT: Prog.Int.Form + Sym.Tab.

Algorithm Scanning v1
WHILE NOT(EndOfFile) DO
detect(token);
classify(token);
codify(token);
19
END
DETECT – WÖRTER ERKENNUNG

I am a student.

- Trennzeichen

if (x==y) {x=y+2}

- Look-ahead
20
CLASSIFY – WÖRTER KLASSIFIZIERUNG

¡ Wörterklassen:
¡ Identifiers Namen
¡ Constants Konstanten
¡ Reserved words (keywords) Schlüsselwörter
¡ Separators Trennzeichen
¡ Operators Operatoren

Nicht klassifiziertes Wort à Syntaxfehler!


21
CODIFY - KODIFIZIERUNG

¡ Namen, Konstanten => Symboltabelle (ST)

¡ PIF = Program Internal Form => Liste von Paaren


¡ Wörter werden repräsentiert durch (Code, Position in ST)

22
Algorithm Scanning v2
WHILE NOT(EndOfFile) DO
code = detect(token);
IF token is reserved word OR operator OR separator
THEN genFIP(code, 0)
ELSE
IF token is identifier OR constant
THEN index = pos(token, ST);
genFIP(code, index)
ELSE message “Lexical error”
ENDIF
ENDIF
23

ENDWHILE
ERKLÄRUNG

¡ genFIP = adds a pair (code, position) to PIF


¡ Pos(token, ST) – suche token in ST;
wenn vorhanden, gibt Position;
wenn nicht vorhanden, fügt ein und gibt Position
¡ Reihenfolge der Klassifizierung (Schlüsselwörter, Namen)
¡ ELSE-Zweig => Fehler-Erkennung wenn Wort nicht klassifizierbar

24
SYMBOLTABELLE

Definition = contains all information collected during compiling regarding the


symbolic names from the source program

identifiers, constants, etc.

Varianten:
- einzige Symboltabelle – mit allen Symbolischen Namen
- separate Symboltablellen für Namen und Konstanten

25
UMSETZUNG EINER SYMBOLTABELLE

Datenstruktur mit effizientem Zugriff: Suchen und Einfügen

1. Unsortierte Liste – nach dem Vorkommen im Quellcode O(n)


2. Sortierte Liste – alphabetisch (numerisch) O(lg n)
3. Binärer Suchbaum (ausgewogen) O(lg n)
4. Hash-Tabelle O(1)
26
HASH-TABELLE

Datenstruktur auf Basis einer indizierten Liste (Array)


¡ Hash-Funktion hash: K → A
¡ K = set of keys (symbolic names)
¡ A = set of positions (|A| = m; m – prime number)
hash(k) = (value(k) mod m) + 1
¡ Konflikte: k1 ≠ k2 , hash(k1) = hash(k2)
27
SICHTBARKEITSBEREICHE VON SYMBOLEN (SCOPE)

¡ Jeder Sichtbarkeitsbereich – eigene Symboltabelle


¡ Struktur à Inclusion tree

28
QUIZ 2

über Programmiersprachen
¡ https://b.socrative.com/student/
¡ Roomname: DJKNOLL

29
FRAGE UND ANTWORTEN

30

Das könnte Ihnen auch gefallen