C & C++ frontend (EDG)
[ROSE Frontend]

Collaboration diagram for C & C++ frontend (EDG):

The frontend reads application program (currently only C and C++ source code), generates EDG's AST which we then traverse and use to generate a new AST using the Sage III Intermediate Representation.

The current version of EDG used here is version 3.3 from July 31, 2003. C and C++ have not changed significantly and so this is a stable platform for our work within the ROSE project. We update the EDG frontend in frequently as of Feb 2006, the current version of EDG is 3.6. For those with and EDG research license, the EDG source code is included with ROSE (located in ROSE/src/frontend/CxxFrontend/EDG/EDG_3.3). In general EDG is very portable code and the limitations of portability of ROSE is that of the portability of EDG (which is C code, not C++). We use a C++ compiler to compile all of EDG since it holds a few pointers to Sage III data structures (typically pointers to SgSymbol and SgType IR nodes).

We expect to eventually support multiple front-ends (for more than just C and C++), but this depends upon our resourses and the complexity of alternative languages and the availabity and complexity of possible front-ends.

A version of EDG which generates C++ code (source-to-source) is available in the ROSE/src/frontend/CxxFrontend/EDG/EDG_3.3/edgFrontEndWithoutSage directory. This is useful for testing when there is some confusion as to if we have broken anything in EDG.

Note:
EDG does not pass valgrind cleanly, though it nearly does.
Develper Note: No attempt has been made to document the EDG frontend or the connection between EDG and Sage III. EDG has a nice user manual which might be helpful and the developer should refer directly to the source code for specific information on the connection between EDG and Sage III.


Generated on Tue Jan 31 05:32:52 2012 for ROSE by  doxygen 1.4.7