Communications of the ACM
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Modern compiler implementation in Java
Modern compiler implementation in Java
A C++ Data Model Supporting Reachability Analysis and Dead Code Detection
IEEE Transactions on Software Engineering
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
A Retargetable C Compiler: Design and Implementation
A Retargetable C Compiler: Design and Implementation
Cracking the 500-Language Problem
IEEE Software
Program Understanding and Maintenance with the CANTO Environment
ICSM '97 Proceedings of the International Conference on Software Maintenance
Designing the McCAT Compiler Based on a Family of Structured Intermediate Representations
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
Handling Preprocessor-Conditioned Declarations
SCAM '02 Proceedings of the Second IEEE International Workshop on Source Code Analysis and Manipulation
An Intermediate Representation for Reverse Engineering Analyses
WCRE '98 Proceedings of the Working Conference on Reverse Engineering (WCRE'98)
Towards Portable Source Code Representations Using XML
WCRE '00 Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)
GXL: Toward a Standard Exchange Format
WCRE '00 Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)
Union Schemas as a Basis for a C++ Extractor
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Generating Robust Parsers using Island Grammars
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Towards a Standard Schema for C/C++
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
C/C++ Conditional Compilation Analysis Using Symbolic Execution
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
YAAB (Yet Another AST Browser): Using OCL to Navigate ASTs
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
An XML-Based Lightweight C++ Fact Extractor
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
gccXfront: Exploiting gcc as a Front End for Program Comprehension Tools via XML/XSLT
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
An Analysis Framework for Understanding Layered Software Architectures
IWPC '98 Proceedings of the 6th International Workshop on Program Comprehension
The Java Developer's Guide to Eclipse
The Java Developer's Guide to Eclipse
Proving program refinements and transformations
Proving program refinements and transformations
A tool chain for reverse engineering C++ applications
Science of Computer Programming
Software assumptions failure tolerance: role, strategies, and visions
Architecting dependable systems VII
Hi-index | 0.00 |
Many activities related to software quality assessment and improvement, such as empirical model construction, data flow analysis, testing or reengineering, rely on static source code analysis as the first and fundamental step for gathering the necessary input information. In the past, two different strategies have been adopted to develop tool suites. There are tools encompassing or implementing the source parse step, where the parser is internal to the toolkit, and is developed and maintained with it. A different approach builds tools on the top of external already-available components such as compilers that output the program abstract syntax tree, or that make it available via an API.This paper discusses techniques, issues and challenges linked to compiler patching or wrapping for analysis purposes. In particular, different approaches for accessing the compiler parsing information are compared, and the techniques used to decouple the parsing front end from the analysis modules are discussed.Moreover, the paper presents an approach and a tool, XOgastan, developed exploiting the gcc/g++ ability to save a representation of the intermediate abstract syntax tree. XOgastan translates the gcc/g++ dumped abstract syntax tree format into a Graph eXchange Language representation, which makes it possible to take advantage of currently available XML tools for any subsequent analysis step. The tool is illustrated and its design discussed, showing its architecture and the main implementation choices made.