Boost logo

Boost :

Subject: [boost] Scalpel: a Spirit&Wave-powered C++ source code analysis library
From: Florian Goujeon (florian.goujeon_at_[hidden])
Date: 2010-09-02 21:55:44


  Dear Boosters,

I'd like to introduce to you the Scalpel library, a project on which
I've worked during the last two years.

Scalpel is a C++ library. Its name stands for source code analysis,
libre and portable library.
It is still under development, but is a fairly advanced work in
progress.

The purpose of this library is to produce a data structure which
corresponds to the meaning (or semantics) of a given C++ source
code. It reveals notions such as namespaces, classes, functions,
variables, types, etc..

Some source code analyzers, like those used by syntax coloring and
autocomplete modules which need to be fast, perform a superficial
analysis. Unlike them, Scalpel aims to accomplish a strict and
exhaustive analysis so that it could even be used as a compiler
front-end. Actually, Scalpel is a compiler front-end, since it goes
through the phases of preprocessing, syntax analysis and semantic
analysis, just like every C++ compiler does. Maybe one day there will
be a Scalpel-powered C++ compiler!

Besides, Scalpel's analysis depth will be adjustable in order to fit
the needs of most programs. For example, it could be possible to
disable the function body analysis for those who need to retrieve
namespace and class members only.

The labor of C++ source code analysis is extremely complex. This is
why having a library wholly devoted to it is a good thing.

Many programs could take advantage of such a library. Among them we
can find modules for code editors, reverse-engineering tools, code
audit software and many other CASE (Computer-Aided Software
Engineering) tools that remain to be invented…

For further information, visit the Scalpel project's website:
http://42ndart.org/scalpel/

The reason why I post this message to the Boost's mailing list is that
Scalpel exclusively uses Boost libraries, notably Boost.Wave (for the
preprocessing part) and Boost.Spirit (for the syntax analysis part).
I believe Scalpel could be a good candidate for inclusion in Boost in
the future. But in the meantime, my project needs contributors: I
simply cannot do all this work by myself.

If I've caught your interest, please visit the Scalpel project's
website. Feedback are welcome!


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk