Arcadia Papers: ABSTRACT
"Representing Semantically Analyzed C++ Code with Reprise",
by David S. Rosenblum and Alexander L. Wolf,
in Proceedings Third C++ Technical Conference, pages 119-134,
Washington, DC, April 1991.
Abstract
A prominent stumbling block in the spread of the C++ programming language has
been a lack of programming and analysis tools to aid development and
maintenance of C++ systems. One way to make the job of tool developers easier
and to increase the quality of the tools they create is to factor out the
common components of tools and provide the components as easily (re)used
building blocks. Those building blocks lexical, syntactic, and
semantic analyzers, tailored database derivers, code annotators and
instrumentors, and code generators. From these building blocks, tools such
as structure browsers, data-flow analyzers, program\specification verifiers,
metrics collectors, compilers, interpreters, and the like can be built more
easily and cheaply. We believe that for C++ programming and analysis tools
the most primitive building blocks are centered around a common representation
of semantically analyzed C++ code.
In this paper we describe such a representation, called Reprise
(REPResentation Including SEmantics). The conceptual model underlying Reprise
is based on the use of expressions to capture all semantic information about
both the C++ language and code written in C++. The expressions can be viewed
as forming a directed graph, where there is an explicit connection from each
use of an entity to the declaration giving the semantics of that entity. We
elaborate on this model, illustrate how various features of C++ are
represented, discuss some categories of tools that would create and manipulate
Reprise representations, and briefly describe our current implementation.
This paper is not intended to provide a complete definition of Reprise.
Rather, its purpose is to introduce at a high level the basic approach we are
taking in representing C++ code.
The Arcadia Project
<arcadia-www@ics.uci.edu>
Last modified: Mon Feb 27 11:27:29 1995