Lestes C++ compiler. Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr.

Slides:



Advertisements
Podobné prezentace
ÚVOD DO C++ 3 TŘÍDY a objekty - POKRAČOVÁNÍ
Advertisements

Programování v C jazyku - SEMINÁŘ
KEG Marek RŮŽIČKA EuroMISE – Kardio, VŠE Praha Projekt Stepper – Aplikace pro podporu víceúrovňové formalizace textových dokumentů.
Správa projektů programem Ant Miroslav Beneš. Správa projektů programem Ant2 Obsah V čem spočívá správa projektů V čem spočívá správa projektů Varianty:
A1PRG - Programování - seminář Ing. Michal Organizační informace 0 Verze
+ BI-SP1: vManager Adam Staněk, Radek Klein, Petr Tatoušek
Oběh dokumentů mezi ústředními orgány státní správy k Ing. Jan Duben Vedoucí projektového týmu březen 2003.
Workflow Foundation Základy a architektura
M. Štulc, J. Šváb, J. Kolena SIMULACE OPERAČNÍHO SYSTÉMU
Semestrální práce KIV/PT Martin Kales Hana Hůlová.
Pole, ukazatele a odkazy
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Softwarový systém DYNAST
Norma IEC Komunikační sítě a systémy v podřízených stanicích
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
Vektorový animátor Diplomová práce
T OOL FOR C OLLABORATIVE XML S CHEMA I NTEGRATION Jiří Meluzín.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Principy překladačů Mezikód Jakub Yaghob.
Principy překladačů Překladač Jakub Yaghob. Literatura a slajdy Aho, Sethi, Ullman: Compilers - Principles, Techniques and Tools, Addison-Wesley 1986.
Lexikální a syntaktická analýza Jakub Yaghob
11 Procesy a procesní řízení 22 Další charakteristiky procesu má svého vlastníka (osoba odpovídající za zlepšování procesu) má svého zákazníka (interního.
PODPURNÉ PROCESY V ORGANIZACI
Podnikový systém SEWSS Jakub Charvát STATISTICA Enterprise-wide SPC System.
Podpora výuky a tvorby ER diagramu ve výukovém systému Barborka Petr Kopka VŠB – TU Ostrava, 2005.
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Základy algoritmizace a programování
13AMP 9. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled ADA ADA Java Java.
2005 Šablona eVŠKP - titulní list ÚVOD  Definice doporučené šablony  Soubor s přednastavenými styly, strukturou, designem  NEREÁLNÉ problémy.
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
Modelovací jazyk UML. Jazyk UML je víceúčelový modelovací jazyk, který byl vyvinut speciálně pro účely softwarového inženýrství. Obsahuje formalizovaný.
Sémantická analýza Jakub Yaghob
Syntaxí řízený překlad
Rozšíření jednouživatelské verze IS na víceuživatelskou Prezentace Diplomové práce Autor : Libor Tomášek Spoluautoři : Pobucký M., Drábek L. Vedoucí :
Ant Připravil: Ing. Jan Kolomazník. strana 2 Proč vznikl Potřeba sestavovat komplexní Nezávisle na platformě Popis založený na xml Spouštění různých úloh.
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Metainformační systém založený na XML Autor: Josef Mikloš Vedoucí práce: Ing. Jan Růžička, Ph.D. V/2004.
Tvo ř te historii. CAD a Data Management VIII. ročník konference Autodesk Academia FÓRUM listopad 2008 Ing.Radomír Žvak DAGIS a.s.
Dokumentace objektů a zveřejnění funkcí
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Dokumentace informačního systému
Souběžný návrh hardware a software (Language for Instruction Set Simulator-Oriented Model) MPO ČR, FT-TA3/128, Jazyk a vývojové prostředí pro.
Databázové modelování
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Vít Profant Obhajoba bakalářské práce
1 Řízení implementace IS a SS* Šablony. 2 Vzorové postupy.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Jazyk XML v geoinformatice
Semestrální projekt Správa webových konferencí Mendelova univerzita Aplikace vývojových technik Jakub Matoušek Květen 2012.
XSLT překladač Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
Jazyk C++ Přednáška 1.. Přednáška C++ č.12 Název C++ –Starší verze jazyka, společně označované jako „C with Classes“ (česky C s třídami), byly používány.
Programování v jazyce C++
WEBOVÝ PORTÁL O POČÍTAČOVÝCH HRÁCH ROMAN POSPĚCH.
Překladače Vnitřní struktura překladače © Milan Keršláger
Hotel Tatra, Velké Karlovice 23. – 25. dubna 2007 S4U – Seminář o Univerzitním informačním systému 1 Pár slov o sazbě výstupních dokumentů Jiří Rybička.
Tým 32, varianta b/4/I.  Jakub Kadlubiec  Roman Pijáček  Petr Pliska  Jan Štourač  Václav Tunka (vedoucí)
KURZ ALGORITMIZACE A PROGRAMOVÁNÍ V JAZYCE C Lekce č. 2: Základní pojmy Bc. Radek Libovický.
Překladače 6. Sémantická analýza
XML a datový standard Zdeněk Jirkovec Softwarové Aplikace a systémy.
NetBeans Plugin.  Echo2 web framework (Ajax, Java)  NetBeans IDE (modularita, Swing designer)  Vizuální design uživatelského rozhraní (WYSIWYG)  Drag.
Dobývání znalostí z databází znalosti
Překladače Syntaktická analýza
Výukový materiál zpracován v rámci projektu
Připravil: Ing. Jan Kolomazník, Ph.D.
Překladače 2. Vnitřní struktura překladače
Operační systémy Vnitřní struktura překladače
Opakování ze 3. cvičení deklarace proměnných výpis na monitor (výstup)
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Transkript prezentace:

Lestes C++ compiler

Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

Cíle projektu 4 překladač jazyka C++ 4 platforma pro další vývoj 4 implementace jazyka v souladu s normou (ISO/IEC 14882:2003)

Proč je to těžké 4 norma C++ –styl –interpretační obtíže –provázanost celku 4 jazyk –rozsáhlost –syntaktická nejednoznačnost –vyhodnocování výrazů –šablony

Nejednoznačnosti v C++ int i, j; class C { /*... */ }; int f() { C (j) = 5, i++; // výraz C (j) = 5, i; // deklarace }

Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

Architektura překladače

4 Abstract Syntax (AS) –kopíruje gramatiku normy –strom 4 Semantic Structures (SS) –sémantika zdrojového kódu 4 Pseudoinstructions (PI) –architekturně nezávislý mezikód –orientovaný acyklický graf (DAG) Druhy vnitřní reprezentace

Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

Preprocesor 4 vlastní implementace –makra s parametry –podmínky –#include –rozšířené znakové sady (utf8) –trigrafy ( ??= ), digrafy ( %: )

Syntaktická analýza  nejednoznačnosti řešeny back-trackingem int f() {  int (*p)  (int);  int (*q)  (0);  int (*r) + 1; } 4  deklarace vs. výraz 4  inicializátor vs. deklarace parametru

Sémantická analýza 4 přetížené funkce a operátory 4 deklarace 4 interakce se syntaktickou analýzou 4 pořadí vedlejších efektů

Pořadí vedlejších efektů (a++,++b)+(c++,++d)     ab    dc  Povolená pořadí acbd abcd cdab cadb

Backend 4 machine description – způsob popisu cílové architektury 4 implementace pro IA32

Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

Framework 4 garbage collector 4 dumper 4 generátor struktur 4 ladicí výpisy 4 chybové hlášky

Generátor struktur 4 XML popis vnitřních struktur kompilátoru 4 transformace XSLT procesorem do C++ 4 podpora vybraných návrhových vzorů 4 automatická podpora pro GC a dumper

Garbage collector 4 vlastní implementace mark & sweep 4 smart pointers

Dumper 4 zobrazení vnitřních struktur překladače 4 ladění, výukové účely 4 XML výstup 4 XSLT transformace do HTML

Dumper

Ladicí výpisy 4 stromová struktura 4 konfigurační soubor XML

Chybové hlášky 4 chyby, varování 4 pozice chyby 4 specifikace v XML 4 potenciální možnost lokalizace

Obsah 1. Úvod 2. Architektura 3. Implementace 4. Framework 5. Závěr

Shrnutí (1) 4 design –klíčové vlastnosti C++ –modularita 4 prostředí pro vývoj –odstínění od rutinních činností –snadné ladění –vhled do činnosti překladače

Shrnutí (2) 4 funkční překladač – podmnožina jazyka – rozšiřitelnost 4 dokumentace –včetně návrhu neimplementovaných vlastností

int factorial(int n) { if ( n<=1 ) { return 1; } return n*factorial(n-1); } _Z9factoriali: push EBP mov EBP, ESP add ESP,-52 push EDI push ESI push EBX mov EAX,0 mov DWORD [EBP-4],EAX mov EAX,DWORD [EBP+8] mov DWORD [EBP-8],EAX mov EAX,DWORD [EBP-8] mov EBX,DWORD [EBP-4] cmp EAX,EBX sete CL mov BYTE [EBP-12],CL mov AL,BYTE [EBP-12] cmp AL,0 jz mov EAX,1 mov DWORD [EBP-16],EAX mov EAX,DWORD [EBP-16] mov EBX,EAX...