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

if, while, return, break

by Vladimir Kovacevic
četvrtak, 30. novembar 2006 - 14:32.

Jel proradilo kome while i if ? Definisao sam gramatiku u .cup fajlu IDENTICNO onoj u dodatku domaceg i nece da prepozna.
U kakvom god obliku da stavim prekine mi parsiranje. Ono sto je jos nelogicnije je sto mi return; prepozna dok kada stavim
break; program puca, iako po sintaksi mogu da stoje na istome mestu, kao sto stoje i u gramatici(

matched ::= BREAK SEMI;
matched ::= WHILE LPAREN condition RPAREN matched ;

matched ::= IF LPAREN condition RPAREN matched ELSE matched;
matched ::= designator LPAREN RPAREN SEMI
{: System.out.println("Pronadjen poziv metode bez argumenata."); :};
matched ::= designator LPAREN act_pars RPAREN SEMI
{: System.out.println("Pronadjen poziv metode sa argumentima."); :};

matched ::= designator LPAREN act_pars_err RPAREN SEMI;

matched ::= designator PLUSPLUS SEMI;

matched ::= designator MINUSMINUS SEMI;

matched ::= RETURN SEMI
{: System.out.println("Pronadjen prazan return iskaz."); :};
)

Redosled navodjenja smena u .cup fajlu pretpostavljam da je nebitan.
Pada mi na pamet da je greska u lekseru, ali i tamo je sve identicno definisano:

<YYINITIAL> return {return new Symbol(sym.RETURN);}
<YYINITIAL> break {return new Symbol(sym.BREAK);}

Neki simboli se stavljaju u znake navoda, ne znam koja su pravila, kada se stavljaju, a kada ne(u primeru sa vezbi + stoji pod navodnicima, a minus ne???)?
Bilo kakva sugestija, predlog savet...

Vlada