Posudek na bakalářskou práci
Student: Štěpán Štefaník
Název práce: Uživatelské rozhraní pro manipulaci s bezkontextovými gramatikami.
Cílem práce navrhnout a implementovat systém pro manipulaci s CFG včetně vhodného uživatelského rozhraní.
Textová část práce má 17 stran (včetně obsahu a seznamu odkazované lite- ratury) a je členěna do 8 kapitol. Značná část práce (Kapitoly 2 a 4, celkem 8 stran) defakto podává zkrácený a neúplný přepis odpovídajích částí skript pro předmět IB005 [3]. Popisy algoritmů neobsahují identifikaci vstupů ani po- pis požadavků na vstupy kladené. Výstupy algoritmů jsou taktéž nedefinovány.
Samotné algoritmy používají nedefinované proměnné. Definice LL(1) gramatik zavádí redundantní požadavek na nelevorekurzivnost gramatiky, bez toho, aby byl tento pojem definován. V obecné definici gramatik, zcela chybí popis typu pravidel, potažmo řetězců terminálů a neterminálů. Bezkontextové gramatiky jsou definovány jednou větou, která nedává smysl. V definici gramatik chybí po- žadavek na to, aby na levé straně každého pravidla gramatiky byl alespoň jeden neterminál. Funkce FIRST a FOLLOW mají špatně definovaný typ. Chybí algo- ritmy popisující výpočet funkcí FIRST a FOLLOW. Chybí algoritmus popisující syntaktickou analýzu LL(1) gramatik.
Implementační část práce je, dle mého názoru, nedostatečná a to jak rozsahem a naplněním požadavků vyplývajích ze zadání prácem, tak i kvalitou. Níže uvádím některé nedostatky, které implementace vykazuje:
• Systém nerealizuje flexibilní zadávání gramatik. Zadávání gramatik je ve své podstatě velmi nešikovně implementováno. Není dokonce možné pra- vidla gramtiky zadat z klávesnice, tj. i pravé strany pravidel se musí “vy- klikat” myší.
• Editace existujících pravidel gramatiky, neumožňuje smazat jeden symbol pravé strany pravidla.
• ε(prázdné slovo) je zde považováno za terminál, a je nutné ho do množiny terminálů explicitně přidat, jinak nelzeε-pravidla vůbec vytvářet.
• “Eliminaceε-pravidel” nefunguje pro gramatikuA→ε|aAa.
• ε je zobrazováno dvěma způsoby, jako {} a jako ” ” (Při mazání termi- náluε.)
• Výpočet množinyF OLLOW1(A) neobsahuje εpokud jeA kořen grama- tiky.
• Gramatika A →ε | Aa je programem chybně označena jako LL(1) gra- matika.
• Nelze spočítatF IRST1(ε).
• Vlastní okno aplikace je nezvykle velké vzhledem k jeho obsahu, viz taktéž obrázek na straně 9.
Celkově je textová část práce nedostatečná a to jak svým rozsahem, tak i obsa- hem. Implementační část je pouze ve formě jednoduchého formuláře, a vykazuje značný počet chyb a nedostatků. Z mého pohledu student Štěpán Štefaník nespl- nil zadání baklářské práce a proto hodnotím jeho práci jako prácinevyhovující (F) a nedoporučuji ji k obhajobě.
V Brně dne 17. ledna 2008,
RNDr. Jiří Barnat, Ph.D.