Programovací jazyky a překladače
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
BI-PJP.21 | Z,ZK | 5 | 2P+1C | česky |
- Garant předmětu:
- Přednášející:
- Cvičící:
- Předmět zajišťuje:
- katedra teoretické informatiky
- Anotace:
-
Studenti budou umět základní metody překladu programovacích jazyků. Seznámí se s vnitřními reprezentacemi současných překladačů GNU a LLVM. Naučí se formálně specifikovat překlad textu, který vyhovuje určité syntaxi, do cílové formy a na základě této specifikace vytvořit překladač. Překladačem se zde rozumí nejen překladač programovacího jazyka, ale jakýkoliv jiný program analyzující a zpracovávající text zapsaný v jazyku, který je dán LL vstupní gramatikou.
- Požadavky:
-
The theory of automata and grammars, basic knowledge of programming (C and C++).
Theory of automata and grammars in the scope of BIE-AAG.21, basic knowledge of programming (C and C++).
A prerequisite for enrollment in BIE-PJP.21 is that the student has earned at least credit for BI-AAG.21 in a previous semester.
- Osnova přednášek:
-
1. Struktura překladače, lexikální analyzátor.
2. Deterministická syntaktická analýza shora-dolů: LL syntaktická analýza.
3. [2] Implementace LL analýzy. Vlastnosti LL gramatik.
5. Transformace na LL(1) gramatiky, zotavení se z chyb při LL analýze.
6. Formalismy pro popis syntaxí řízeného překladu a sémantiky: překladové a atributové gramatiky.
7. Jednoprůchodový atributovaný překlad řízený LL analýzou, L-atributové gramatiky, příklady jednoduchých překladů.
8. Vnitřní datové struktury překladače, vnitřní reprezentace.
9. Abstraktní syntaktický strom, tříadresový kód - vnitřní reprezentace překladače GNU.
10. Vnitřní reprezentace překladače LLVM.
11. Příklady jednoduchého překladače.
12. Lokální optimalizace kódu.
13. Další varianty LL syntaktické analýzy.
- Osnova cvičení:
-
1. Návrh a realizace lexikálního analyzátoru.
2. Realizace syntaktické analýzy rekurzívním sestupem.
3. Atributové překladové gramatiky.
4. Překlad do jazyka zásobníkového počítače.
5. Překlad do syntaktického stromu.
6. [2] Konzultace k domácí práci.
- Cíle studia:
-
Předmět obsahuje přehled obecných rysů programovacích jazyků a výklad základních metod jejich implementace. Návrh a programová realizace jednotlivých částí překladače jsou podloženy základní teorií gramatik a automatů. Pro ilustraci metod je zaveden jednoduchý programovací jazyk a navržen a realizován překladač. Dále jsou probrány základní metody implementace datových typů, podprogramů a datových abstrakcí.
- Studijní materiály:
-
1. Aho A.V., Lam M.S., Sethi R., Ullman J.D. : Compilers: Principles, Techniques, and Tools (2nd Edition). Addison Wesley, 2006. ISBN 978-0321486813.
2. Crespi Reghizzi S., Breveglieri L., Morzenti A. : Formal Languages and Compilation (3rd Edition). Springer, 2019. ISBN 978-3-030-04878-5.
3. Scott M. L. : Programming Language Pragmatics (3rd Edition). Morgan Kaufmann, 2009. ISBN 978-8131222560.
4. Wilhelm R., Seidl H., Hack S. : Compiler Design - Syntactic and Semantic Analysis. Springer, 2013. ISBN 978-3642175398.
5. Fischer C. N., Cytron R. C., LeBlanc R. J. : Crafting A Compiler. Addison-Wesley, 2009. ISBN 978-0136067054.
- Poznámka:
-
This course is prezented in Czech.https://courses.fit.cvut.cz/BI-PJP/
- Další informace:
- https://courses.fit.cvut.cz/BI-PJP/
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů:
-
- Mgr. specializace Počítačová bezpečnost, 2020 (volitelný předmět)
- Mgr. specializace Návrh a programování vestavných systémů, 2020 (volitelný předmět)
- Mgr. specializace Počítačové systémy a sítě, 2020 (volitelný předmět)
- Mgr. specializace Manažerská informatika, 2020 (volitelný předmět)
- Mgr. specializace Softwarové inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Systémové programování, verze od 2020 (volitelný předmět)
- Mgr. specializace Webové inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Znalostní inženýrství, 2020 (volitelný předmět)
- Mgr. specializace Teoretická informatika, 2020 (volitelný předmět)
- Mgr. program, pro fázi studia bez specializace, ver. pro roky 2020 a vyšší (volitelný předmět)
- Bc. specializace Informační bezpečnost, 2021 (volitelný předmět)
- Bc. specializace Manažerská informatika, 2021 (volitelný předmět)
- Bc. specializace Počítačová grafika, 2021 (volitelný předmět)
- Bc. specializace Počítačové inženýrství, 2021 (povinně volitelný předmět, volitelný předmět)
- Bc. program, pro fázi studia bez specializace, 2021 (VO)
- Bc. specializace Webové inženýrství, 2021 (volitelný předmět)
- Bc. specializace Umělá inteligence, 2021 (volitelný předmět)
- Bc. specializace Teoretická informatika, 2021 (PS)
- Bc. specializace Softwarové inženýrství, 2021 (volitelný předmět)
- Bc. specializace Počítačové systémy a virtualizace, 2021 (volitelný předmět)
- Bc. specializace Počítačové sítě a Internet, 2021 (volitelný předmět)
- Study plan for Ukrainian refugees (volitelný předmět)
- Mgr. specializace Systémové programování, verze od 2023 (volitelný předmět)
- Mgr. specializace Teoretická informatika, 2023 (volitelný předmět)
- Bc. specializace Informační bezpečnost, 2024 (volitelný předmět)
- Bc. program, pro fázi studia bez specializace, 2024 (VO)
- Bc. specializace Manažerská informatika, 2024 (volitelný předmět)
- Bc. specializace Počítačová grafika, 2024 (volitelný předmět)
- Bc. specializace Softwarové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Webové inženýrství, 2024 (volitelný předmět)
- Bc. specializace Počítačové sítě a Internet, 2024 (volitelný předmět)
- Bc. specializace Počítačové inženýrství, 2024 (povinně volitelný předmět, volitelný předmět)
- Bc. specializace Počítačové systémy a virtualizace, 2024 (volitelný předmět)
- Bc. specializace Umělá inteligence, 2024 (volitelný předmět)
- Bc. specializace Teoretická informatika, 2024 (PS)