Traversal, Case Analysis, and Lowering for C++ Program Analysis

To work effectively, programmers need tools to support their typical development activities, such as the creation, analysis, and transformation of source code. Analysis and transformation tools can be difficult to write for modern programming languages and, without a reusable framework, each tool mu...

Full description

Bibliographic Details
Main Author: Wagner, Luke A.
Other Authors: Stroustrup, Bjarne
Format: Others
Language:en_US
Published: 2010
Subjects:
C++
Online Access:http://hdl.handle.net/1969.1/ETD-TAMU-2009-08-908
http://hdl.handle.net/1969.1/ETD-TAMU-2009-08-908
Description
Summary:To work effectively, programmers need tools to support their typical development activities, such as the creation, analysis, and transformation of source code. Analysis and transformation tools can be difficult to write for modern programming languages and, without a reusable framework, each tool must separately implement nontrivial algorithms like name lookup and type checking. This thesis describes an extension to one such framework, named Pivot, that focuses on programs written in C++. This extension, named Filter, assists the tool builder in traversal, case analysis, and lowering of the data structure representing C++ programs. Comparisons described in the thesis show a 2-4x code reduction when solving basic problems (e.g., searching for uses of a given declaration) using the extension and a performance overhead that drops below 2x for larger problems (e.g., checking C++ layout compatibility).