Re: Oporavak od greske ...
> > > U postavci zadatka kaze se da se oporavak npr. od neispravne definicije
> > > promjenljive vrsi ignorisanjem karaktera do ';' .
> > > Da li razmatramo slucajeve kada je izostavljen ';' ? Slicno pitanje vazi
> > > i za ostale stavke tacke 3. domaceg zadatka.
> >
> > I mene interesuje ista stvar pa bih molio asistenta i/ili profesora
> > da se izjasne po gornjem pitanju. Hvala unapred.
Ako bas vas zanima kako se radi bolji oporavak - ovo je
cisto informativno za onoga koga zanima - postoje nacini
(bar sto se tice c-ovskog yacc-a) da se ide do sledeceg "sigurnog"
tokena na ulazu pa da se on "vrati" na ulaz, na primer, ako
zelimo da ne preskocimo znak } pri trazenju kraja statementa,
stavicemo nesto kao:
statement -> error "}" { yyerrok; yychar = "}"; }
yychar je promenljiva koja sadrzi sledeci token sa ulaza.
Njenu vrednost parser po potrebi (kada god mu treba ulazni simbol da
odluci koja je sledeca akcija) postavlja pozivom leks. analizatora
yylex().
Deo gornje linije izmedju { i } nalaze parseru da kada upari error
smenu (pri tome je vec progutao "}" na ulazu jer smena sadrzi
taj znak, ponovo se parseru podmetne "}" kao sledeci ulazni simbol.
TAko se moze dodati i niz smena za druge tokene koje ne zelimo
da preskocimo npr:
statement -> error "if"
i tome slicno.
Napomena:
Naravno ovo funkcionise u slucaju da parser pri prepoznavanju
smene statement -> error "}" nije vec procitao ulaz iza "}",
sto je gotovo sigurno u ovoj situaciji ispunjeno
- yacc-ovski parser ne cita ulaz ako
jednoznacno zna na osnovu steka sta da uradi). Ovo se proverava
u fajlu koji predstavlja stanja parsera a koji se moze dobiti
kod yacc-a opcijom -v. Evo kako se prepoznaje stanje kod koga se
za bilo koji ulaz (oznaka je .) preduzima ista akcija (dakle i
ne cita se tekuci ulaz):
-----------
state 12
term : '(' izraz ')' . (8)
. reduce 8
-----------
DB
- Follow-Ups:
- Re: Oporavak od greske ...
- From: "Nikola Mihajlovic" <alamothe@ptt.yu>
- Re: Oporavak od greske ...
- References:
- Oporavak od greske ...
- From: Basic Danijel <danijel@net.yu>
- Re: Oporavak od greske ...
- From: Dragan Marjanovic <marecare2@gmail.com>
- Re: Oporavak od greske ...
- From: Dragan Bojic <bojic@etf.bg.ac.yu>
- Oporavak od greske ...
Previous by date: Re[2]: Oporavak od greske ...
Next by date: init deo parsera
Previous by thread: Re: Oporavak od greske ... Next by thread: Re: Oporavak od greske ...
Previous by thread: Re: Oporavak od greske ... Next by thread: Re: Oporavak od greske ...