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

when I tested the c code with only one function(int function(int toto){int a;/*doc0*/
> > char b;/*doc1*/ return toto+a;}), I got doc0,doc1, with getComments(). with "for (IASTDeclaration declaration : translationUnit.getDeclarations()){
if( declaration instanceof IASTFunctionDefinition){
System.out.println(((IASTFunctionDefinition) declaration).getDeclarator().getName());
}" I got "function", so the function name in console. 

But when I tried a c file where I defined 2 functions. I got no function name. I think there would be something wrong in the code.
my CFile.c 
/*Documentation function1*/
int function1(char a){
printf("This is function1");
return 0;
}
/*Documentation function main*/
int main(void) {
puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
function1('1');
return EXIT_SUCCESS;
}

> From: glathe.helko@xxxxxxxxxxxxxx
> Date: Wed, 18 Aug 2010 12:44:12 +0200
> Subject: Re: [cdt-dev] org.eclipse.cdt.core.dom.parser.c
> To: cdt-dev@xxxxxxxxxxx
>
> Hi Andreas,
>
> but the c source code is not valid. Copy and paste it in the Eclipse
> CDT C Editor and you will see the error message.
>
> I think that the non deprecated code you are using is propably more
> tollerant against syntax errors.
>
> Kind regards from Berlin ,Helko
>
> Sincerely,
>
> Helko Glathe
>
>
>
> 2010/8/18 Andreas Graf <andreas.graf@xxxxxxxxx>:
> > Hmm,
> >
> > I tried the following code to avoid the deprecated interfaces and it seems
> > to parse fine:
> >
> >  IParserLogService log = new DefaultLogService();
> >                  String codeString = "int function(int toto){int a;/*doc0*/
> > char b;/*doc1*/ return toto+a; //*doc2*//}";
> >                  char[] code = codeString.toCharArray();
> >                  FileContent reader = FileContent.create("",code);
> >                  Map definedSymbols = new HashMap();
> >                  String[] includePaths = new String[0];
> >                  IScannerInfo info = new ScannerInfo(definedSymbols,
> > includePaths);
> >
> >                  try {
> >                     IASTTranslationUnit translationUnit
> > =GCCLanguage.getDefault().getASTTranslationUnit(reader, info, null, null, 0,
> > log);
> >                     String x ="";
> >                     x="X";
> >                 } catch (CoreException e) {
> >                     // TODO Auto-generated catch block
> >                     e.printStackTrace();
> >                 }
> >
> > Am 18.08.2010 11:42, schrieb Helko Glathe:
> >
> > 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
> >
> >
> > --
> > Andreas Graf
> > BDM Automotive
> > Mobil: +49 (0) 151-10860479 (preferred)
> > Tel.: +49 (0) 7231 / 1 54 71-0
> > Fax.: +49 (0) 7231 / 1 54 71-29
> >
> >
> > Web: http://www.itemis.de
> > Mail: andreas.graf@xxxxxxxxx
> > Xing: http://www.xing.com/profile/Andreas_Graf
> > Twitter: http://www.twitter.com/grafandreas
> > Blog: http://5ise.quanxinquanyi.de
> >
> > itemis GmbH
> > Blücherstrasse 32
> > D-75177 Pforzheim
> > Rechtlicher Hinweis:
> > Amtsgericht Mannheim, HRB 50700996
> > Ust.Id.Nr.: DE250574762
> > Geschäftsführer: Sebastian Neus
> >
> > _______________________________________________
> > 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