Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-dev] Re: Codan evolution

HEllo
I am interested in codan but with an aim to use it outside of eclipse.
I managed to write a very simple application that uses CDT to parse C
files, but there is something I would like to do I cannot.

If I feed the following file to the parser, it does not report any
problem:

qsdqsf dsfsdf sdf
int function(void * pointer)
{
   return toto;
}

Here is the code for the parser and the way I use it (sorry for the
formatting). What am I doing wrong ?


       public boolean check(File toCheck) throws IOException,
CoreException {
             IScannerInfo scannerInfo = new ScannerInfo();
             ParserLanguage language = ParserLanguage.CPP;
             IParserLogService logService = new NullLogService();
             ICodeReaderFactory factory = FileCodeReaderFactory.getInstance();
             CodeReader codeReader = factory .createCodeReaderForTranslationUnit(toCheck.getPath());
             IScannerExtensionConfiguration scannerConfiguration =
            (language == ParserLanguage.C ? new GCCScannerExtensionConfiguration()
                           : new GPPScannerExtensionConfiguration());

 

             IScanner scanner = new CPreprocessor(codeReader,
scannerInfo, language,

                           logService, scannerConfiguration, factory);

 

             ISourceCodeParser parser = new GNUCPPSourceParser(scanner,

                           ParserMode.COMPLETE_PARSE, logService,

                           new ANSICPPParserExtensionConfiguration());

 

             DefaultLogService log = new DefaultLogService() {

 

                    @Override

                    public void errorLog(String message) {

                           System.err.println(message);

                    }

 

                    @Override

                    public boolean isTracing() {

                           return true;

                    }

 

                    @Override

                    public boolean isTracingExceptions() {

                           return true;

                    }

 

                    @Override

                    public void traceException(Throwable th) {

                           th.printStackTrace();

                    }

 

                    @Override

                    public void traceLog(String message) {

                           System.err.println(message);

                    }

 

             };

             IASTTranslationUnit astTranslationUnit = parser.parse();

             ASTVisitor visitor = new CPPASTVisitor() {

 

                    @Override

                    public int visit(ICPPASTBaseSpecifier baseSpecifier)
{

                           System.err.println(baseSpecifier);

                           return super.visit(baseSpecifier);

                    }

 

                    @Override

                    public int visit(ICPPASTNamespaceDefinition
namespaceDefinition) {

                           System.err.println(namespaceDefinition);

                           return super.visit(namespaceDefinition);

                    }

 

                    @Override

                    public int visit(ICPPASTTemplateParameter
templateParameter) {

                           System.err.println(templateParameter);

                           return super.visit(templateParameter);

                    }

 

                    @Override

                    public int visit(IASTDeclaration declaration) {

                           System.err.println(declaration);

                           return super.visit(declaration);

                    }

 

                    @Override

                    public int visit(IASTDeclarator declarator) {

                           System.err.println(declarator);

                           return super.visit(declarator);

                    }

 

                    @Override

                    public int visit(IASTDeclSpecifier declSpec) {

                           System.err.println(declSpec);

                           return super.visit(declSpec);

                    }

 

                    @Override

                    public int visit(IASTEnumerator enumerator) {

                           System.err.println(enumerator);

                           return super.visit(enumerator);

                    }

 

                    @Override

                    public int visit(IASTExpression expression) {

                           System.err.println(expression);

                           return super.visit(expression);

                    }

 

                    @Override

                    public int visit(IASTInitializer initializer) {

                           System.err.println(initializer);

                           return super.visit(initializer);

                    }

 

                    @Override

                    public int visit(IASTName name) {

                           System.err.println(name);

                           return super.visit(name);

                    }

 

                    @Override

                    public int visit(IASTParameterDeclaration
parameterDeclaration) {

                           System.err.println(parameterDeclaration);

                           return super.visit(parameterDeclaration);

                    }

 

                    @Override

                    public int visit(IASTProblem problem) {

                           System.err.println(problem);

                           return super.visit(problem);

                    }

 

                    @Override

                    public int visit(IASTStatement statement) {

                           System.err.println(statement);

                           return super.visit(statement);

                    }

 

                    @Override

                    public int visit(IASTTranslationUnit tu) {

                           System.err.println(tu);

                           return super.visit(tu);

                    }

 

                    @Override

                    public int visit(IASTTypeId typeId) {

                           System.err.println(typeId);

                           return super.visit(typeId);

                    }

 

             };

             visitor.visit(astTranslationUnit);

             IASTProblem[] cppProblems = astTranslationUnit

                           .getPreprocessorProblems();

             for (IASTProblem problem : cppProblems)

                    System.err.println(problem.getMessage());

             return cppProblems.length == 0;

       }

-- 
Arnaud Bailly -- OQube
<software engineering>
http://www.oqube.com/




Back to the top