From: Bernhard H. <ber...@be...> - 2004-01-04 23:13:17
|
> > SDCC.y:788: error: structure has no member named `type' > > make[1]: *** [SDCCy.o] Fehler 1 > > > > Erik, did you forget to commit the header? > > Yes, sorry. It's in now. Thanks! You seem to understand bison and yacc quite good. I've got one problem: there are no informations about parenthesis in the ast code, and I've no idea how to add it. I need it for a correct implementation of a type propagation, here is an example: long foo (long l) { return 32000 * 2 * l; } This simple example returns the wrong result, because 32000 * 2 is calulated as "int" instead of "long". The variable l should cause a promotion to "long". Of course I don't want to introduce new bugs, therefore parenthesis must be checked: long foo (long l) { return (32000 * 2) * l; } This source compiles to exactly the same ast-code. But in this case the type propagation would have to stop at the parenthesis. Do you see a chance to add the required information to the ast code? There's no hurry, I'll certainly need several months to implement the type propagation. Diffs for SDCC.lex and SDCC.y would be enough, I could already take care about the necessary changes in SDCCast.c and SDCCicode.c. Thanks, Bernhard |