// Mul -> Term [ <*> Term ]
int Mul(SetType keys) {
int leftOp, rightOp;
SetType allkeys;
allkeys=(E SMUL) | HTerm | keys;
leftOp=Term(allkeys);
check(3,allkeys);
if((E symbol) & ((E SMUL) | HTerm)) {
if(symbol==SMUL) getsymbol(); else error(4,HTerm | keys);
rightOp = Term(keys);
leftOp = leftOp * rightOp;
}
return leftOp;
}
Vie mi niekto povedat, ci mam dobre tuto funkciu pre horeuvedenu gramatiku?
Mam pocit, ze tu niekde bude nejaka chyba, lebo zvysne funkcie si myslim, ze su OK, ale vyraz 5*4*3 mi vyhodnoti ako 6.
//Edit: Podla zvratenej inf. logiky to asi bude dobre: 5*4=20. Kedze * je neasoc. , program ocakava /. Sice ho nenajde, ale "zotavi sa z toho" a predpoklada, ze tam / je => 20/3 = 6.