Tým 32, varianta b/4/I
Jakub Kadlubiec Roman Pijáček Petr Pliska Jan Štourač Václav Tunka (vedoucí)
Interpret imperativního jazyka IFJ08 Podmnožina C++ Použití tříadresného kódu Implementováno v jazyce C ISO99
Řádkové komentáře Operace modulo Jednoduché zotavování z chyb Přehledné vypisování chyb Cyklus do… while Znakové konstanty ve stylu jazyka C Porovnávání mezi double a integer Deklarace více proměnných stejného typu na jednom řádku
Všechny datové struktury jsou generické Tabulka symbolů – Binární vyhledávací strom Řazení – Merge sort Vyhledávání - Boyer –Moorův algoritmus
Vstup: zdrojový kód Realizace pomocí konečného automatu, viz. dokumentace str. 16 Ukládá identifikátory a konstanty do tabulky symbolů Výstup: posloupnost tokenů
Jádro celého projektu Po dokončení syntaxí řízeného překladu je volán interpret Obsahuje: Obecný syntaktický analyzátor Výrazový syntaktický analyzátor Sémantický analyzátor Generátor tříadresného kódu
Vstup: jednotlivé tokeny SA shora dolů LL gramatika – str. 14 v dokumentaci Realizace pomocí rekurzivního sestupu Pokud je očekáván výraz, volá výrazový SA Má na starosti řídící konstrukce jazyka Výstup: validita zdrojového kódu
Vstup: Tokeny Precedenční analýza zdola nahoru Využívá zásobník Pokud je kód validní, iniciuje sémantické akce Neukládá na zásobník zarážky Výstup: Chybový kód / Výsledek výrazu
Spouštěn při sémantických akcích syntaktickým analyzátorem Kontroluje vícenásobné deklarace Kontroluje správnost datových typů Provádí přetypování identifikátorů a výrazů
Volán syntaktickými analyzátory a sémantickým analyzátorem Postupně generuje instrukce Instrukce průběžně ukládá do seznamu instrukcí Posledním prvkem syntaxí řízeného překladu
Provádí seznam instrukcí Pracuje s vstup / výstupními operacemi Vrací návratový kód programu
Vývojová metodika Strategie vývoje Project hosting Administrativa
Vyvíjeli jsme agilně Refaktoring KISS (Keep it simple, stupid) Vývoj po iteracích
Včasný začátek Vývoj po milnících Jednotné nástroje (Eclipse, OS linux) Kolektivní rozhodování a plánování Zhodnocení práce po každém týdnu
SCM: Subversion Mechanismus řízení projektu (milestones, tickets, tasks) Systém zpráv Projektová wiki Jednotné úložiště souborů
Pravidelné schůzky (2h / týden) Sumarizace a nahrávky schůzek Pravidelné code review rozsáhlejších prací za uplynulý týden