[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-dev] RE: Using CDT API to get C-AST
|
Thank for the rapid response. The error i am facing from the second block of
code is below:
Exception in thread "main" java.lang.ExceptionInInitializerError
at Itest.main(Itest.java:25)
Caused by: java.lang.IllegalStateException: Workspace is closed.
at
org.eclipse.core.resources.ResourcesPlugin.getWorkspace(ResourcesPlugin.java:329)
at org.eclipse.cdt.internal.core.model.CModel.<init>(CModel.java:34)
at org.eclipse.cdt.internal.core.model.CModelManager
.<init>(CModelManager.java:84)
at
org.eclipse.cdt.internal.core.model.CModelManager.getDefault(CModelManager.java:165)
at org.eclipse.cdt.core.model.CoreModel.<clinit>(CoreModel.java :60)
... 1 more
Which is indicating the line: ITranslationUnit trUnit = (ITranslationUnit)
cFile;
can you please correct me if i am wrong?
after solving this problem i will get the IASTTranslationUnit by
ITranslationUnit.getAST ()
>From which i can get IASTDeclaration by
IASTTranslationUnit.getDeclarations();
i can get IName by IASTTranslationUnit.getDeclarations(Binding); (guessing i
somehow know the global variable binding)
or i can get global IScope by IASTTranslationUnit.getScope();
But which of this will help me to get the global variable declarations and
the statements which are using it?
Any Help on how can i edit those statement nodes and unparse/Pretty Print
them?
Thanks again.
Regards,
A.Rahman
Doug Schaefer-2 wrote:
>
> The proper way to get an AST now (I think, I'm starting to lose track as
> I've been busy up in build/debug-land), is off the ITranslationUnit using
> getAST().
>
> As for your exception, what was the exception? That's important
> information.
> Was it a ClassCastException? That would mean your IFile wasn't a
> ITranslationUnit. You should always check the types before doing a cast.
>
> Doug Schaefer, QNX Software Systems
> Eclipse CDT Project Lead, http://cdtdoug.blogspot.com
>
>
>> -----Original Message-----
>> From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On
>> Behalf Of rainman
>> Sent: Thursday, May 31, 2007 1:58 PM
>> To: cdt-dev@xxxxxxxxxxx
>> Subject: [cdt-dev] Using CDT API to get C-AST
>>
>>
>> Hello All,
>> I am new to CDT and trying to do something with cdt since last 1 month.
>> I
>> have searched many sites and mailed in cdt news portal as well. Please
>> help
>> me some one.
>>
>> >From this list I found some thing like below but failed to get the
>> declaration of class to pass in IFile:
>> IFile file = ...
>> IASTTranslationUnit ast =
>> CDOM.getInstance().getTranslationUnit(file);
>> CPPNameCollector col = new CPPNameCollector();
>> ast.accept(col);
>>
>> Iterator i = col.nameList.iterator();
>> while (i.hasNext()) {
>> IASTName n = (IASTName) i.next();
>> IBinding binding = n.resolveBinding();
>>
>> if(binding instanceof CPPClassType) {
>> // do something with the class
>> }
>> }
>>
>>
>> Also from another email I got something like below but when i pass
>> Path(file
>> location) it gives some exception with workspace and exits at first line
>> of
>> if block.
>>
>> ICElement cFile = CoreModel.getDefault().create(IPath);
>> if(cFile != null)
>> {
>> ITranslationUnit trUnit = (ITranslationUnit) cFile;
>> ICElement[] elts = trUnit.getChildren();
>> if(elts != null)
>> {
>> for(int i=0; i<elts.length; i++)
>> {
>> System.out.println(elts[i].getElementName());
>> System.out.println(elts[i].getElementType());
>> }
>> }
>> }
>>
>> Any simple idea or link indication will be appreciable. I've been trying
>> with the CDOM cause according to Doug Schaefer that is the starting point
>> for creating AST. I want to traverse the AST to get the idea which
>> statements using global variable. Change those statements and unparse to
>> get
>> the changed source.
>> For this i created and searched the cdt doc. I got the idea that i need
>> to
>> check:
>>
>> IDeclaration.getElementType() == ICElement.C_VARIABLE
>>
>> To get the global variable type. But couldn't the idea how to get the
>> IDeclaration from the IASTDeclaration (if i can successfully get ast that
>> is
>> :-).
>>
>> Also i got some knowledge that in IDeclaration there is
>> ISourceManipulation
>> which might be in help for ast modification. But not sure about the AST
>> unparse or pretty printer help yet.
>>
>> Thank you for your patience.
>> Hope to get some positive and fast response.
>> Regards.
>> A.Rahman
>> --
>> View this message in context: http://www.nabble.com/Using-CDT-API-to-get-
>> C-AST-tf3847998.html#a10898933
>> Sent from the Eclipse CDT - Development mailing list archive at
>> Nabble.com.
>>
>> _______________________________________________
>> cdt-dev mailing list
>> cdt-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/cdt-dev
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
>
>
--
View this message in context: http://www.nabble.com/Using-CDT-API-to-get-C-AST-tf3847998.html#a10899752
Sent from the Eclipse CDT - Development mailing list archive at Nabble.com.