|
|
|
Re: Fwd: dependency tee from c parser entities downto token | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
Christopher Li wrote:
On Sat, May 5, 2012 at 4:38 PM, Konrad Eisele<eiselekd@xxxxxxxxx> wrote:I appended a diff for review. Is this kind of interface ok? This is kind of not a patch to apply, rather I want to avoid to put effort in it and you telling me later I am too intrusive...:). So can you give a ok or comment... Interface so far: struct preprocess_hook { def : called when #define is processedWhy do you need #define hooks? The macro symbol should have pos and macro body already.
I need to hook to insert a TOKEN_M_EMPTY into the substitution body if the define is an empty define. The "post" hook is then used to remove all TOKEN_M_EMPTY again after the preprocessing (or rather to save it internally).
args_beg : called before argument expasnion args_end : called after argument expasnion body_beg : called before body expansion body_end : called after body expansionI am wondering why is do you need 4 call backs for macro expand instead of just one like the patch I post previously. That macro expand give you the name of the macro need to be expand and the replacement list. My guess is that you want the end position of the macro before expand. That can be add to the macro expand hook. Will that be sufficient?
I want to trace the complete macro substitution. Using a before-after hook for both body and arg I can reconstruct what is done in the expand (Not just dependencies but the whole of expand).
post : called after preprocessI don't think the post call back is needed. You can call the preprocessor directly. It will return when it complete. Then you can do your post work. You can invoke the parser separately. The sparse wrapper function does it all in one function but that did not stop you it step by step if you wants to.
See above. I need the post to filter out the helper TOKEN_M_EMPTY.
All of there I found are needed. There might be more to be added... I also introduce a tokentype TOKEN_M_EMPTY so that I can track empty expansion. To filter these out again I add the post hook.What purpose does the token_m_empty if you filter those token later? Rember where in the stream there is an invisible macro?
See above. I use it as a placeholder. The "post" hook saves the information then and removes the token again.
Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
-- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
[Newbies FAQ] [Kernel List] [Site Home] [IETF Annouce] [DCCP] [Netdev] [Networking] [Security] [Bugtraq] [Photo] [Yosemite] [MIPS Linux] [ARM Linux] [Linux Security] [Linux RAID] [Linux SCSI] [DDR & Rambus] [Trinity Fuzzer Tool]