[cfe-dev] Parsing objective-c message expressions

Rajesh Karmani rkumar8 at cs.uiuc.edu
Fri Aug 1 09:09:41 PDT 2008


Hi,
Is there a way to find the parent expression given an expression? Say I 
have an instance of ObjCMessageExpr and
want to find out if it's part of a declaration (DeclStmt) or an 
statement by itself. Is there any facility to do that?


Thanks.

rajesh


Ted Kremenek wrote:
> On Jul 29, 2008, at 8:11 AM, Rajesh Karmani wrote:
>
>   
>> Hi,
>> I have just started looking at Clang and found it to be a great tool.
>> I also came across the RewriteObjc module and wanted to play around
>> with
>> how the Objective-C messages are "rewritten".
>>
>> I have not been able to figure out how an assignment statement like:
>>
>> c = [obj execute];
>>
>> is parsed in Clang (what functions are called?). I would like to
>> rewrite
>> such statements differently from
>>
>> [obj execute];
>>
>> where nothing is being returned. Could someone please guide me which
>> parts of code should I be looking at?
>>     
>
> Hi Rajesh,
>
> In general, an excellent way to figure out the structure of the ASTs
> is to use the --ast-dump option:
>
>    clang --ast-dump myfile.m
>
> For example:
>
> void f(NSObject *m) {
>    NSObject* c = [m execute];
> }
>
> becomes:
>
> void f(NSObject *m)
> (CompoundStmt 0x2372060 <<stdin>:3:21, line:5:1>
>    (DeclStmt 0x2371ff0 <line:4:3>
>      0x2371fa0 "NSObject *c =
>        (ImplicitCastExpr 0x236c030 <col:17, col:27> 'NSObject *'
>          (ObjCMessageExpr 0x2372010 <col:17, col:27> 'id':'struct
> objc_object *' selector=execute
>            (DeclRefExpr 0x2371fd0 <col:18> 'NSObject *' ParmVar='m'
> 0x23712b0)))")
>
> Note that assignments and variable declarations are different.
> Assignments are represented using BinaryOperator, while variable
> declarations are represented using DeclStmt.
>
> Ted
>   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080801/4d1612f5/attachment.html>


More information about the cfe-dev mailing list