Stránka 1 z 1

chyba v gramatice?

Napsal: 6. 1. 2008 20:35
od Tacoud
Ahoj, při testování du5-adam-t0.mls jsem narazil na zajímavý problém. Příkaz

Kód: Vybrat vše

i:= -1 + 3; { 2 { <--- pozor ! } }
mi neuloží do proměnné hodnotu 2, ale -4.
Přijde mi, že je chyba v zadané gramatice, daný výraz se podle ní může rozložit pouze takto:

Kód: Vybrat vše

-1 + 3  ~  jedn. vyraz ~ - (TERM + TERM)
Je to tak, nebo mi něco uniká?

Re: chyba v gramatice?

Napsal: 7. 1. 2008 01:13
od banan
Z priameho prepisu obrazkovej gramatiky sa vyraz "-1+3" vyhodnocuje jednoduchsie ako "-4", ale "-1+3" musi byt logicky "2". Obrazkovu gramatiku chapem ako lubovolnu inu bezkontextovu gramatiku - tj pravidla, ktore generuju slova patriace do jazyka. Vyznam slovam dava az semanticky popis jazyka (specifikacia), ktory nikde nenajdes, tazke sa musis spolahnut na zdravy sedliacky rozum, a podla neho vyrazy spravne vyhodnocovat. Napr. kde je napisane, ze 'mod' je asociativny zlava? Z obrazku to nevycitas, ale tak nejako sme si vsetci tipli, ze to tak naozaj bude ;-).

Btw, upravit gramatiku tak, aby pocitala "-1+3" spravne, nie je tazke - staci si uvedomit, kedy sa musi unarne minus aplikovat a do tohto pravidla vyskyt minuska pridat.

Spoiler alert! Necitaj dalej, ak si chces gramatiku upravit sam bez napovedy.
Hint 1: prvy term moze obsahovat unarne minus
Hint 2: pozri sa do pravidla zoznam_termov a hlavne na jeho nerekurzivnu cast
Hint 3: nerekurzivnou castou myslim generovanie prveho termu ;-)

Re: chyba v gramatice?

Napsal: 7. 1. 2008 07:52
od Tacoud
Díky za nakopnutí správným směrem :)