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

dc.contributorStroustrup, Bjarne
dc.creatorWagner, Luke A.
dc.description.abstractTo 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).
dc.subjectProgram analysis
dc.titleTraversal, Case Analysis, and Lowering for C++ Program Analysis