[cfe-dev] declRefExpr clang

Eli Friedman eli.friedman at gmail.com
Thu Nov 15 14:00:24 PST 2012


On Thu, Nov 15, 2012 at 1:23 PM, Mohammad Adil <madil90 at gmail.com> wrote:
> How can I get the CompundStmt or the Stmt for this expression?

ParentMap (or some equivalent).

> Is there any
> way to move token by token forward from a SourceLocation?

No.

-Eli

> On Fri, Nov 16, 2012 at 1:30 AM, Eli Friedman <eli.friedman at gmail.com>
> wrote:
>>
>> On Thu, Nov 15, 2012 at 12:00 PM, madil90 <madil90 at gmail.com> wrote:
>> > Hi,
>> >   I have a DeclRefExpr which tells me wherever a variable is used. I
>> > want to
>> > find out the previous or the next ";" so that I can go to the start of
>> > the
>> > command in which this variable was used e.g.
>> >
>> > int a,b;
>> >
>> > a = b + 3;
>> >      | |
>> >
>> >    In this case the DeclRefExpr for b will start and end at the
>> > locations
>> > shown. How can I find the previous ";" (in this case at the end of the
>> > line
>> > int a,b;))
>>
>> There isn't any existing code to handle this, but it isn't too hard:
>> find the CompoundStmt which contains the given expression, then get
>> the end location of previous statement in that CompoundStmt.  (This is
>> ignoring various edge cases, but that's the fundamental algorithm.)
>> The ParentMap class might be useful for implementing this.
>>
>> -Eli
>
>
>
>
> --
> Mohammad Adil
> LUMS SSE
>



More information about the cfe-dev mailing list