«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Re: Pitanje za asistenta

by Sacci
ponedeljak, 16. januar 2006 - 17:54.

1. Potpuno se slazem sa kolegom u vezi ovog i slicnih problema,naime CUP ( a verovatno i BYACCJ ) pocnu da uparuju prema najblizoj smeni za error ( u zavisnosti od tokena koji su predhodili ),pa ako se data smena ne zavrsi odgovarajuce ( kao sto bi ovde bila neophodna D_MALA_Z ) ,CUP ne pokusa da upari sa nekom "sirom" smenom,tj. u ovom slucaju sa instr::=error TACKA_ZAREZ , ili sa onom koja bi trebala da hvata greske u IF kontroli ( kao sto je asistent napisao ),... i baci se exception,...

2. Jedan kolega je vec ranije vise puta opstavljao pitanje: kako da se parser razlicito ponasa u obicnim instrukcijama i onim u klasama ili u telima funkcija,tj. KAKO da se preskoci kontrola do ' } ' ,jer ce CUP upariti "uzi" error,za npr.
if(x<y)
x = a+b;
g=3;
f(2,5 ,,, ) ;
endif
i opraviti se uspesno od greske ( naravno ako iza error simbola postoji dovoljan broj tokena koji se uspesno mogu parsirati <--- iz CUP manula,a taj broj je odredjen sa error_sync_size u lr_parser.java i po defaultu je 3 ),ali nece i ne moze da preskoci kontrolu do kraja jer iako postoji takav oporavak u nasoj specifikaciji,parser se vec oporavio,...

3. Ovaj primer koji je asistent naveo nije ni prema specifikaciji,zar ne treba bilo koji skup instrukcija > 1 instrukcjie staviti u '{' '} ' ?

4. Oporavke koje asistent navodi da treba da postoje kao "najsiri",npr. izmedju BEGIN END.,ili izmedju { },nije naravno problem napisati,ali koja to greska postoji koju CUP prvo nece pokusati da upari "uze" ( a prema problemu 1. to uglavnom znaci exception ili neko neocekivano ponasanje programa ),tako da ovi "siri' oporavci ne rade sto bi trebalo!

Ispravite me ako gresim,
Unapred Hvala
Pozdrav
----- Original Message -----
From: Borislav Nikolic
To: ri4pp@titan.etf.bg.ac.yu
Sent: Monday, January 16, 2006 11:16
Subject: [ri4pp] Pitanje za asistenta


Ukoliko imamo nesto oblika
f(2,5 ,,, ;
i oporavak oblika
instr ::= error TACKA_ZAREZ
onda ce se oporaviti od greske.
Medjutim ukoliko se implementira i oporavak
instr ::= design L_MALA_Z error:e D_MALA_Z TACKA_ZAREZ
koji ne utice direktno na gornji problem, iz nekog razloga parser za gornji primer vise nece prepoznati gornju smenu za oporavak.
Zasto?

Moja koleginica i ja smo gramatiku zavrsili jos pre 15 dana i od tada ne mozemo da resimo ovaj problem sa oporavkom...


----------------------------------------------------------------------------
Yahoo! Photos - Showcase holiday pictures in hardcover
Photo Books. You design it and we'll bind it!