tobolikd / IFJproject

IFJ/IAL team project.
2 stars 1 forks source link

Prolog #41

Closed Mikynek closed 2 years ago

Mikynek commented 2 years ago

Bude potřeba se víc poprat s prologem, který obsahuje povinnou strukturu, aby byl program validní, vypadá následovně:

<?php
declare(strict_types=1);

Mezi <?php a declare musí být mezera - respektive libovolný počet bílých znaků (mezera, tabulátor, komentář a odřádkování), před <?php žádný znak být nesmí. Více o problematice v zadání v sekci 4.1 Základní struktura jazyka. Nebo zde: https://moodle.vut.cz/mod/forum/discuss.php?d=1065


Určitě nám momentálně chybí kontrola pro tabulátor a komentář a potom kontrola pro samotný declare(strict_types=1);. Na democviku také navíc Křivka doporučoval - "Prolog řeší SYN-ANAL, který bude očekávat 2 tokeny oddělené povinnou mezerou (tabulátorem, odřádkování, komentářem), pokud ne nastává SYNTAKTICKÁ CHYBA (návratová hodnota 2)." - (YT záznam democvika - čas 27:20-28:55 a 49:18)

tobolikd commented 2 years ago

Jasný, ale tak to je potom na implementaci v syn-analyzer, kterej čeká na gramatiku. Vynechávání komentářů a bílých znaků funguje (je pravda, že testuju jenom mezery, tak přidám testy na tab) Sice neposíláme token open tagu, ale víme, že tam je, pokud to prolezlo lex analyzerem

fix1t commented 2 years ago

Dalo by sa to pridať do checkProlog() , s tým, že by funkcia volala 7x getToken (je tam 7 rôznych tokenov) a porovnala by ich s predurčeným prologom. Aspoň sa nebudú posielať zbytočné tokeny do synAnal. V prípade chyby sa nastaví error na 2 aj keď sa to bude spacovávať v lexAnal.

fix1t commented 2 years ago

Mimochodom tabulátor nerobí problémy