interpret of language ifj08
DESCRIPTION
I worked on interpret language IFJ08 with my team.TRANSCRIPT
Interpret jazyka IFJ08
Autoři: J. Miklósy, V. Sák, R. Makudera, M. Nechvátal, R. Šebedovský
Součásti projektu
Lexikální analýza
Syntaktická a sémantická analýza
Vestavěné funkce a hashovací tabulka
Interpret
2
Lexikální analýza
Deterministický konečný automat
Vstupem je zdrojový soubor
Výstupem jsou tokeny nebo lexikální chyba
3
Lexikální analýza
Graf konečného automatu
4
Syntaktická analýza
Spolu se sémantickou analýzou se podílí na syntaxí řízeném překladu
Vstupem jsou tokeny
Ukládá instrukce do seznamu
LL-tabulka
Gramatika výrazů
Implementována metodou rekurzivního sestupu
5
Syntaktická analýza
Gramatika pro tvorbu LL-tabulky :
LL- tabulka
6
Syntaktická analýza
Gramatika pro výrazy
Precedenční SA
Implementováno precedenční
tabulkou
Redukce výrazů pomocí zásobníku
Definice gramatiky :
7
Interpret
Postupné zpracovávání instrukcí
Vstupem je seznam instrukcí uložených v tří-adresném kódu
typ instrukce (např. DIV, READ, NOT ...)
• adresa vstupního operandu (op1)
• adresa vstupního operandu (op 2)
• adresa výstupního operandu (op 3)
8
Hashovací tabulka
Tabulka symbolů
Pole lineárních seznamů
Statická velikost hash tabulky je 1024
Pomocí funkce hash se zjistí index pro uložení prvku
Ukládá informace o proměnných
9
Funkce QuickSort
Algoritmus pro seřazení symbolů v řetězci
Řešený rekurzivně
Využívá metodu rozdělení - partition
10
Boyer-Mooreův algoritmus
Vyhledávací algoritmus pro vyhledání vzorku v řetězci
Vzorek se porovnává zprava
Využívá dvě heuristiky
V případě nalezení vrací pozici, jinak vrací -1
11
Prostor pro dotazy
Děkujeme za pozornost
12