Global analysis and transformations in preprocessed languages
D Spinellis - IEEE Transactions on Software Engineering, 2003 - ieeexplore.ieee.org
IEEE Transactions on Software Engineering, 2003•ieeexplore.ieee.org
Tool support for refactoring code written in mainstream languages such as C and C++ is
currently lacking due to the complexity introduced by the mandatory preprocessing phase
that forms part of the C/C++ compilation cycle. The definition and use of macros complicates
the notions of scope and of identifier boundaries. The concept of token equivalence classes
can be used to bridge the gap between the language proper semantic analysis and the non-
preprocessed source code. The CScout toolchest uses the developed theory to analyze …
currently lacking due to the complexity introduced by the mandatory preprocessing phase
that forms part of the C/C++ compilation cycle. The definition and use of macros complicates
the notions of scope and of identifier boundaries. The concept of token equivalence classes
can be used to bridge the gap between the language proper semantic analysis and the non-
preprocessed source code. The CScout toolchest uses the developed theory to analyze …
Tool support for refactoring code written in mainstream languages such as C and C++ is currently lacking due to the complexity introduced by the mandatory preprocessing phase that forms part of the C/C++ compilation cycle. The definition and use of macros complicates the notions of scope and of identifier boundaries. The concept of token equivalence classes can be used to bridge the gap between the language proper semantic analysis and the non-preprocessed source code. The CScout toolchest uses the developed theory to analyze large interdependent program families. A Web-based interactive front end allows the precise realization of rename and remove refactorings on the original C source code. In addition, CScout can convert programs into a portable obfuscated format or store a complete and accurate representation of the code and its identifiers in a relational database.
ieeexplore.ieee.org