Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.



Podobné dokumenty
Lexikální analýza Teorie programovacích jazyků

Překladač a jeho struktura

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

Úvod. Programovací paradigmata

Generování vnitřní reprezentace programu

Úvod do programovacích jazyků (Java)

2 Formální jazyky a gramatiky

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

Konstruktory překladačů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

TÉMATICKÝ OKRUH TZD, DIS a TIS

Poslední aktualizace: 14. října 2011

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

Automaty a gramatiky

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Programovací jazyk Pascal

1.Charakterizujte křížový překladač 2.Objasněte pojem silikonový překladač 3.Co to jsou formátory textu? Uveďte příklad

DTP Základy programování Úvod do předmětu

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

GENEROVÁNI KÓDU jazyk Mila

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

a operačních systémů

Interpret jazyka IFJ2011

Počítač jako prostředek řízení. Struktura a organizace počítače

8. Laboratoř: Aritmetika a řídicí struktury programu

Implementace aritmetického stromu pomocí směrníků

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Lexikální analýza (Obsah)

Algoritmizace a programování

/01: Teoretická informatika(ti) přednáška 5

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Princip funkce počítače

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Implementace LL(1) překladů

1. Definujte překladač. Jaký je rozdíl mezi interpretačním a kompilačním překladačem? Co je to konverzační překladač?

Implementace překladače imperativního jazyka IFJ05

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Návrh algoritmů pro sémantické akce při výstavbě interpretu metodou rekurzivního sestupu

Analýza toku dat. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 15. listopad, 2012

Strojový kód. Instrukce počítače

Sudý počet jedniček: S 1 0S 1 1S 2 e S 2 1S 1 0S 2

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

09. Memory management. ZOS 2006, L.Pešička

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Paradigmata programování 1

VISUAL BASIC. Přehled témat

Algoritmizace prostorových úloh

PŘETĚŽOVÁNÍ OPERÁTORŮ

Lexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2

Lexikální analýza. Miroslav Beneš Dušan Kolář

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Architektury počítačů a procesorů

Jazyk C pro pokročilé

Jednoznačné a nejednoznačné gramatiky

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Adresní mody procesoru

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Uplatnění metod na zvolený jazyk

Čísla značí použité pravidlo, šipka směr postupu Analýza shora. Analýza zdola A 2 B 3 B * C 2 C ( A ) 1 a A + B. A Derivace zleva:

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

Programovací jazyky, syntaxe, sémantika, zpsoby popisu

Program a životní cyklus programu

Konečný automat. Jan Kybic.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Algoritmizace. Cíle předmětu

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

ALGORITMIZACE A PROGRAMOVÁNÍ

Diplomová práce Automatický převod programů napsaných v jazyce Java do dalších jazyků (C/C++/FreePascal)

Tvorba software a algoritmizace

Formální jazyky a gramatiky Teorie programovacích jazyků

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Simulátory aplikačně specifických instrukčních procesorů Jazyk LISA. Masařík Karel

Překladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA MULTIGENEROVÁNÍ PARSING BASED ON MULTIGENERATION

Předmluva 13 Použité konvence 14. KAPITOLA 1 Základní číselné soustavy a pojmy Číselné soustavy a převody 15 1.

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Transkript:

Virtuální počítač Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor

Virtuální počítač

Překladač Překladač : Zdrojový jazyk Cílový jazyk Analytická část: Lexikální analýza Syntaktická a sémantická analýza Syntetická část: Sémantické zpracování Generování cílového kódu

Zdrojový kód Cílový kód a n a l ý z a s y n t é z a Lexikální analáza Syntaktická analýza Sémantická analýza Generování Vnitřního jazyka Optimalizace Generování cílového kódu T A B U L K A S Y M B O L ů

Kompilátor / Interpret Zdroj.kód fáze 1 Zdroj.kód fáze 1 fáze 2 fáze 2...... fáze n-1 fáze n-1 Cílový kód fáze n = generování vstupní interpretace=fáze n data výsledky výpočtu

Interpret V čistě jen interpretační podobě se nepoužívá (neefektivní) Analytická část: Lexikální analýza Syntaktická a sémantická analýza Syntetická část: Sémantické zpracování Interpretace

Lexikální analýza 1. Zakódování lexikálních elementů (do číselné podoby) 2. Vynechávání komentářů Výhody: pevná délka symbolů pro další fáze zpracování Např. { a = b * 3 + 5 ; /* poznamka */ c = a + 1 ; } při kódování: ident konst + * = { } ; na čísla 1 2 3 4 5 6 7 8 převede na: 1 adr a, 5, 1 adr b, 4, 2 3, 3, 2 5, 8, 1 adr c, 5, 1 adr a, 8, 7 Tj. vnitřní jazyk lexikálního analyzátoru (mezijazyk)

Lexikální analýza Tvary lexikálních symbolů jsou popsatelné regulárními gramatikami: <symbol> <identifikátor> <číslo> class if while... + - * /... ( ) { }... =+ ++ ==... <identifikátor> <identifikátor> a <identifikátor> b... <identifikátor>0... <identifikátor>9 a b... Lexikální analyzátor je konečným automatem

Syntaktický analyzátor Zjišťuje strukturu překládaného textu (syntaktický strom) Je založen na bezkontextových gramatikách (dovolují popisovat vnořované závorkové struktury) Vytváří derivační strom <složený příkaz> { <seznam příkazů> } (1) <seznam příkazů> <příkaz> ; <seznam příkazů> (2) <příkaz> ; (3) <příkaz> <proměnná> = <výraz> (4) <výraz> <výraz> + <term> <výraz> - <term> <term> (5)(6)(7) <term> <term> * <faktor> <term> / <faktor> <faktor> (8)(9)(10) <faktor> (<výraz>) proměnná konstanta (11)(12)(13)

Syntaktický analyzátor Např. { a = b + 5 ; /* poznamka */ c = a + 1 ; } <složený příkaz > { <seznam příkazů> } <příkaz> ; <seznam příkazů> proměnná a = <výraz> <příkaz> ; <výraz> + <term> proměnná c = <výraz> <term> <faktor> <výraz> + <term> <faktor> konstanta 5 <term> <faktor> proměnná b <faktor> konstanta 1 proměnná a

Syntaktický analyzátor { a = b + 5 ; /* poznamka */ c = a + 1 ; } Struktura je zachycena SA jako posloupnost použití gramatických pravidel při odvození tvaru programu z počátečního symbolu gramatiky Možnosti: Levá derivace 1,2,4,5,7,10,12,10,13,... (rozepisuje vždy nejlevější neterminální symbol) Pravá derivace 1,2,3,4,5,10,... (rozepisuje vždy nejlevější neterminální symbol)

Sémantické zpracování Souběžně či následně s rozpoznáváním syntaktické struktury jsou vyvolávány sémantické akce (sdružené s každým z gramatických pravidel), které převádí program do vnitřního jazyka překladače. Formy vnitřních jazyků: a. Postfixová notace (operátory následují za operandy) b. Prefixová notace (operá c. Víceadresové instrukce Např. a = ( b + c ) * ( a + c ) ; LOA a ST PLUS b c pom1 LOV b LOA a PLUS a c pom2 LOV c MUL MUL pom1 pom2 pom3 PLUS PLUS ST a pom3 LOV a LOV b LOV c LOV c PLUS PLUS MUL LOV a ST LOV c

Optimalizace PLUS b c pom1 PLUS a c pom2 MUL pom1 pom2 pom3 ST a pom3 Redukce počtu pomocných proměnných, eliminace nadbytečných přesunů mezi registry, optimalizace cyklů PLUS b c pom1 PLUS a c pom2 MUL pom1 pom2 pom1 ST a pom1

Interpretace LOA a LOV b LOV c PLUS LOV a LOV c PLUS MUL ST dej adresu operandu a na vrchol zásobníku dej obsah operandu b na vrchol zásobníku dej obsah operandu c na vrchol zásobníku sečti vrchol a podvrchol, výsledek vlož do zásobníku dej obsah operandu a na vrchol zásobníku dej obsah operandu c na vrchol zásobníku sečti vrchol a podvrchol, výsledek vlož do zásobníku vynásob vrchol a podvrchol, výsledek vlož do zásobníku ulož hodnotu z vrcholu zásobníku na adresu uloženou pod vrcholem c c a a + c b b b + c b + c b + c (a+c)*(b+c) adr a adr a adr a adr a adr a adr a adr a 1 2 3 4 5 a 6 7 8 9 uloženo na a

Generování Logicky jednoduché (expanze makroinstrukcí vnitřního jazyka) Prakticky komplikované (respektování instrukčních možností procesoru) PLUS b c pom1 PLUS a c pom2 MUL pom1 pom2 pom1 ST a pom1 MOV b, R0 ADD c, R0 STO R0, p1 MOV a, R0 ADD c, R0 MUL p1, R0 STO R0, a