Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
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?
Interpreter?
Source code Object code
/ program / program
COMPILER
C, C#, Java, Machine?
JavaScript, Python,
Ruby, PHP
6
COMPILER SIND KOMPLEXE SYSTEME
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
¡ 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
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
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
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
24
SYMBOLTABELLE
Varianten:
- einzige Symboltabelle – mit allen Symbolischen Namen
- separate Symboltablellen für Namen und Konstanten
25
UMSETZUNG EINER SYMBOLTABELLE
28
QUIZ 2
über Programmiersprachen
¡ https://b.socrative.com/student/
¡ Roomname: DJKNOLL
29
FRAGE UND ANTWORTEN
30