Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] org.eclipse.cdt.core.dom.parser.c

Hi Flo,

what exact is your problem now?
And see the post from Andreas... his code example does not use deprecated code.

Sincerely,

Helko Glathe



2010/8/18 Flo Menier <josieenfrance@xxxxxxxxxxx>:
> That's right Helko.
> I also need all function names, I tried to do:
> IParserLogService log = new DefaultLogService();
> String codeString = "";
> /*******   Take a c source file  ********/
> File file = new
> File("Y:\\IFX_Tools\\Plugin_Eclipse\\workspace\\ParserCDT\\src\\CFile.c");
>     FileInputStream fis = null;
>     BufferedInputStream bis = null;
>     DataInputStream dis = null;
>     try {
>       fis = new FileInputStream(file);
>       bis = new BufferedInputStream(fis);
>       dis = new DataInputStream(bis);
>       while (dis.available() != 0) {
>      codeString = codeString.concat(dis.readLine());
>       }
>       fis.close();
>       bis.close();
>       dis.close();
>     } catch (FileNotFoundException e) {
>       e.printStackTrace();
>     } catch (IOException e) {
>       e.printStackTrace();
>     }
> char[] code = codeString.toCharArray();
> CodeReader reader = new CodeReader(code);
> Map definedSymbols = new HashMap();
> String[] includePaths = new String[0];//{"#include <stdio.h>"};
> IScannerInfo info = new ScannerInfo(definedSymbols, includePaths);
> ICodeReaderFactory readerFactory = FileCodeReaderFactory.getInstance();
> IASTTranslationUnit translationUnit =
> GCCLanguage.getDefault().getASTTranslationUnit(reader, info, readerFactory,
> null, log);
> // Function name
> for (IASTDeclaration declaration : translationUnit.getDeclarations()){
> if( declaration instanceof IASTFunctionDefinition){
> System.out.println(((IASTFunctionDefinition)
> declaration).getDeclarator().getName());
> }
> }
> // comments
> for (IASTComment com :translationUnit.getComments()){
> System.out.println(com.toString());
> }
> I got only the comments this time. No declarations, what's wrong?
> CFile.c
> #include <stdio.h>
> #include <stdlib.h>
> /* Documentation function 1*/
> int function1(int a){
>  printf("This is function 1");
>  return 0;
> }
> /*Documentation function main*/
> int main(void) {
> puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
> function1(0);
> return EXIT_SUCCESS;
> }
>> From: glathe.helko@xxxxxxxxxxxxxx
>> Date: Wed, 18 Aug 2010 11:42:39 +0200
>> Subject: Re: [cdt-dev] org.eclipse.cdt.core.dom.parser.c
>> To: cdt-dev@xxxxxxxxxxx
>>
>> Hello Flo,
>>
>> I think that your C Source Code example is invalid.
>> The part "//*doc2*//" is not one block comment, but instead it is a
>> single line comment. The closing curly bracket "}" of your C function
>> ist also included in this single line comment, because your posted
>> code does not include any linebreaks. Thus, replace your "//" through
>> a single "/" to get a block comment and try your code again.
>>
>> Cheers, Helko
>>
>> Sincerely,
>>
>> Helko Glathe
>>
>>
>>
>> 2010/8/18 Flo Menier <josieenfrance@xxxxxxxxxxx>:
>> > Thanks Helko. I tried to do what you said:
>> > public static void main(String[] args) throws Exception {
>> > IParserLogService log = new DefaultLogService();
>> > String codeString = "int function(int toto){int a;/*doc0*/ char
>> > b;/*doc1*/
>> > return toto+a; //*doc2*//}";
>> > char[] code = codeString.toCharArray();
>> > CodeReader reader = new CodeReader(code);
>> > Map definedSymbols = new HashMap();
>> > String[] includePaths = new String[0];
>> > IScannerInfo info = new ScannerInfo(definedSymbols, includePaths);
>> > ICodeReaderFactory readerFactory = FileCodeReaderFactory.getInstance();
>> > IASTTranslationUnit translationUnit
>> > =GCCLanguage.getDefault().getASTTranslationUnit(reader, info,
>> > readerFactory,
>> > null, log);
>> > for (IASTComment com :translationUnit.getComments()){
>> > System.out.println(com.getComment().toString());
>> > }
>> > I got nothing printed in console. getComments() gave me a
>> > IASTComment[10],
>> > value is null for all 10 IASComment?
>> >> From: glathe.helko@xxxxxxxxxxxxxx
>> >> Date: Wed, 18 Aug 2010 00:41:38 +0200
>> >> Subject: Re: [cdt-dev] org.eclipse.cdt.core.dom.parser.c
>> >> To: cdt-dev@xxxxxxxxxxx
>> >>
>> >> Hello,
>> >>
>> >> have a look at the CVS repository:
>> >>
>> >> " 1. Connect to CVS repository:
>> >> :pserver:anonymous@xxxxxxxxxxxxxxx:2401/cvsroot/tools (Or
>> >> :pserver:anonymous@xxxxxxxxxxxxxxxxx:80/cvsroot/tools from behind
>> >> corporate firewall)
>> >> 2. Check out: org.eclipse.cdt/all "
>> >>
>> >> Underneath of "all" you will find the folder "org.eclipse.cdt.core".
>> >> Inside their is a subfolder for the "parser" where you can find the
>> >> source code.
>> >>
>> >>
>> >> But I think you can access Block Comments right know using the AST of
>> >> the C Source Code. The IASTTranslationUnit provides a method for
>> >> getting all comments (getComments()). This Method returns an Array of
>> >> IASTComment's. And IASTComment provides a to determine whether it is a
>> >> block comment or not (see IASTComment.isBlockComment()).
>> >>
>> >> Cheers, Helko
>> >>
>> >>
>> >>
>> >> Sincerely,
>> >>
>> >> Helko Glathe
>> >>
>> >>
>> >>
>> >> 2010/8/17 Flo Menier <josieenfrance@xxxxxxxxxxx>:
>> >> > Can someone tell me where I can download the code source
>> >> > of org.eclipse.cdt.core.dom.parser.c,
>> >> > and org.eclipse.cdt.internal.core.parser.scanner? I want to
>> >> > understand
>> >> > how
>> >> > lexer works in CDT? I want to get block comments in a C source file
>> >> > instead
>> >> > of ignorer them.
>> >> > Thanks a lot
>> >> > _______________________________________________
>> >> > 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
>> >
>> > _______________________________________________
>> > 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
>
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
>
>


Back to the top