[cfe-dev] clang

David Blaikie dblaikie at gmail.com
Sun Nov 18 11:50:33 PST 2012


Kicking this back to the ML because I'm not as familiar with the c API
or python binding on top of it (& don't have the time to dig into it
further right now).

On Tue, Nov 13, 2012 at 2:24 AM, Janina <janina.siemer at gmx.de> wrote:
> Hi,
>
> You can find an example attached. Inside the folder, you will find the
> example for the If-Else Condition and the LibClang Code. I had execute the
> Libclang Code and the result write in the "libclang.txt" file. For example I
> had execute clang -cc1 -ast-dump and write it in the "ast-dump.txt" file.
>
> Regards
> Janina
>
>
>
>> -----Ursprüngliche Nachricht-----
>> Von: David Blaikie [mailto:dblaikie at gmail.com]
>> Gesendet: Montag, 12. November 2012 18:35
>> An: Janina; cfe-dev Developers
>> Betreff: Re: [cfe-dev] clang
>>
>> [+cfe-dev]
>>
>> On Mon, Nov 12, 2012 at 2:23 AM, Janina <janina.siemer at gmx.de> wrote:
>> > Hi,
>> >
>> >
>> > I use LibClang and if I read the ast, the following Example are in
>> the ast
>> > or not in the ast.
>> >
>> > This Example is in the ast:
>> > static STSRET StatusFktWert
>> >    (
>> >       VTYP          A,
>> >       STATUS16      B     ,                       /* aktueller Status
>> der PV
>> > */
>> >       STATUS16      C     ,                     /* aktueller Status
>> der PV 2
>> > */
>> >       STATUS32      D           ,      /* Statusmaske mit
>> abzufragenden Bits
>> > */
>> >       INFO32       *E                                       /* Zg->
>> Ergebnis
>> > */
>> >    );
>> >
>> >
>> > This Example is not in the ast:
>> > static STSRET StatusFktWert
>> >    (
>> >       VTYP          aVtype,     // PV type
>> >       STATUS16      aPvState,   // aktueller Status der PV
>> >       STATUS16      aPvState2,  // aktueller Status der PV 2
>> >       STATUS32      aStateMask, // Statusmaske mit abzufragenden Bits
>> >       INFO32*       aResult,    // Zg-> Ergebnis
>> >       GETWERT       GetWertAME, // Pointer to GetWertSM or SimGetWert
>> >       SATZNR        aRecnum     // Record number
>> >    );
>> >         If I Use  clang -cc1 -ast-dump this one is not there, too.
>> >
>> >
>> > This IF-Else Condition is not in the ast:
>> >    if (ameld->status1.bit.TYP == ZWEI_BIT_ABME)
>> >       *zustand = AUSSTELLUNG;
>> >    else
>> >       *zustand = 0;
>> >
>> >         My speculation is, that the If-Condition is FAlSE, if I write
>> > if(1==1)..... the whole IF-Else Condition is in the ast.
>> >
>> > If I use clang -cc1 -ast-dump the If-Else Condition is there.
>>
>> Sorry, I'm still having trouble following your examples as they are
>> incomplete (& I'm not terribly familiar with libclang's behavior - but
>> I would be surprised if it differs so wildly from -ast-dump as you
>> describe). It would be helpful if you could provide complete examples
>> (the entire source files - reduced to the simplest complete example -
>> that you're using as input, and possibly a reduced (but
>> standalone/complete) example of the libclang program you're using to
>> navigate the AST).
>>
>> Perhaps you are navigating the CFG? (I don't know if libclang exposes
>> this - if it does, then you'll find that things that are trivially
>> compile-time unreachable won't appear in the CFG, this is by design)
>>
>> - David
>>
>> >
>> >
>> >
>> >
>> >> -----Ursprüngliche Nachricht-----
>> >> Von: David Blaikie [mailto:dblaikie at gmail.com]
>> >> Gesendet: Montag, 12. November 2012 03:29
>> >> An: Janina
>> >> Cc: cfe-dev Developers
>> >> Betreff: Re: [cfe-dev] clang
>> >>
>> >> On Sat, Nov 10, 2012 at 8:17 AM, Janina <janina.siemer at gmx.de>
>> wrote:
>> >> > Hi,
>> >> >
>> >> >
>> >> >
>> >> > if I build the ast from a C++ Code, some Nodes are not in the ast.
>> Is
>> >> it
>> >> > possible that clang can´t read every Element from a C++ Code?
>> >>
>> >> Could you show some complete examples of the issue you're
>> discussing?
>> >> (a simple, but complete, piece of code as well as the command(s) you
>> >> ran (you might want to try clang -cc1 -ast-dump as discussed here:
>> >> http://clang.llvm.org/docs/IntroductionToTheClangAST.html ) & the
>> >> output you got & the output you expected)
>> >>
>> >> >
>> >> >
>> >> >
>> >> > For example:
>> >> >
>> >> >  Variable1->Variable2
>> >> >
>> >> >  *Variable3
>> >> >
>> >> >
>> >> >
>> >> > Or like something other variants?
>> >> >
>> >> >
>> >> >
>> >> > Why do not the If/Else Condition get in the ast if the if-
>> Condition
>> >> is
>> >> > false?
>> >> >
>> >> > If the If-Condition is false, so the else is not in the ast too.
>> >> >
>> >> >
>> >> >
>> >> > Regards
>> >> >
>> >> > Janina
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > cfe-dev mailing list
>> >> > cfe-dev at cs.uiuc.edu
>> >> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>> >> >
>> >




More information about the cfe-dev mailing list