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

Oporavak od gresaka - zagrade

by Bojic Petar
sreda, 11. januar 2006 - 17:55.

Za oporavak od gresaka u izrazima uveo sam smenu

exprFakt : '('error')'

Medjutim kod izraza :
a=((2+3+) : (4-5));
postoje dve greske - prva unutar zagrade (2+3+) i od nje se uspesno oporavi, a druga zbog znaka ":".
Ali kod ovog drugog oporavka parser upari prvu zagradu sa pretposlednjom zagradom (iako bi meni vise odgovaralo da je upari sa poslednjom), i tako proglasi ono izmedju za error a to je u ovom slucaju
(2+3+) : (4-5
I tako na kraju kad naidje na poslednju zagradu on prijavi sintaksnu gresku.
Kako ovo moze da se unapredi tj. kad naidje na zagradu ispred broja 4 da nju uzme u obzir i da zna da se ona uparuje sa zagradom posle broja 5.

Oporavak bi mogao da se razresi uvodjenjem smene
naredbaDodele : ID '=' error ';'
ali prijava te greske bi navela programera na pogresan zakljucak da mu je neispravna naredba dodele iako je greska u izrazu.

Pozdrav
Pera