From: Andre B. <and...@gm...> - 2002-12-21 07:53:22
|
Baptiste Lepilleur wrote: >>Well, since holidays start I'm not sure if my family is taking to much >>of my spare time :-) >>But I will check the Dev-C++ IDE and think about parsing full files, >>which need to be discussed isn't it ? >> >> > >Yes. I already have some ideas concerning this. The difficult part will >probably be dealing with unknown macros which do not end with a semi-colon. >It will be fairly import that the full parser has good fault tolerance. > what about adding first: - support of parsing functions/methods with there header - support of parsing class declarations - parse full files including macro definitions and think about fault tolerance Some strategy on beeing fault tollerant could be to introduce AST-Nodes for not parsable code-parts and also for not known type information for symbols. > > > >>And testing of cause the VC6 plug in ! >> >> > > > >>Tell me Baptiste if there's a small job like the last one. >> >> > >Well, I can't think of one now, but you could get started on the >IntroduceExplainingVariable refactoring. > >While it is not possible at the current time, when the full parser will be >done, we might want to try to guess the return type of the extracted >expression instead of asking it to the user. > >I don't know for you, but I often use this refactoring when dealing with a >long chain of call: > >contact.getAddress().getPostalCode() >=> >const Address &address = contact.getAddress(); >address.getPostalCode(); > >If the type of 'contact' is known (and the class declaration), we should be >able to guess the type of the expression. This will be difficult as it will >require expression analysis and interpretation. > Yeah I would try, but we need to parse class declarations to collect this information isn't it ? Since we need to known about a classes members/methods. This needs the introduction of new AST-NodeTypes, any suggestions ? I'm allready starting to think about this -- so if it's ok for you than I will open a new to-do-item on the Wiki pages... lets say, "Parse method implementation and class declaration" Some test example which should work after this extension: class Name { method_declaration ( ... parameters ...) ; /* optional implementation */ } method_declaration ( ... parameters ... ) { /* compound statement parsed using the current parser implementation */ } -- Andre |