The browser you are using is not supported by this website. All versions of Internet Explorer are no longer supported, either by us or Microsoft (read more here: https://www.microsoft.com/en-us/microsoft-365/windows/end-of-ie-support).

Please use a modern browser to fully experience our website, such as the newest versions of Edge, Chrome, Firefox or Safari etc.

Demand-driven evaluation of collection attributes

Author

Summary, in English

n order to make attribute grammars useful for complicated analysis tasks, a number of extensions to the original Knuth formalism have been suggested. One such extension is the collection attribute mechanism, which allows the value of an attribute to be defined as a combination of contributions from distant nodes in the abstract syntax tree. Another extension that has proven useful is circular attributes, evaluated using fixed-point iteration. In this paper we show how collection attributes and the combined formalism, circular collection attributes, have been implemented in our declarative meta programming system JastAdd, and how they can be used for a variety of applications including devirtualization analysis, metrics and flow analysis. A number of evaluation algorithms are introduced and compared for applicability and efficiency. The key design criterion for our algorithms is that they work well with demand evaluation, i.e., defined properties are computed only if they are actually needed for a particular program. We show that the best algorithms work well on large practical problems including the analysis of large Java programs.

Publishing year

2009

Language

English

Pages

291-322

Publication/Series

Automated Software Engineering

Volume

16

Issue

2

Document type

Journal article

Publisher

Springer

Topic

  • Computer Science

Keywords

  • Attribute grammars - Collection attributes - Circular attributes - Fixed-point computations - Source code analysis

Status

Published

Project

  • Embedded Applications Software Engineering

ISBN/ISSN/Other

  • ISSN: 1573-7535