Object-Oriented Declarative Program Analysis
(2007)- Abstract
- This thesis deals with techniques for raising the programming level for a particular kind of computations, namely those on abstract syntax trees. Such computations are central in many program analysis tools, such as compilers, smart language-sensitive editors, and static analysis tools. All techniques presented in this thesis support modular description and efficiency and are capable of handling large programs.
The work is based on Reference Attributed Grammars (RAGs) which combines object-oriented features with declarative programming to specify computations on abstract syntax trees. RAGs have proven useful, e.g., for performing static-semantic analysis of object-oriented languages. We investigate new applications of... (More) - This thesis deals with techniques for raising the programming level for a particular kind of computations, namely those on abstract syntax trees. Such computations are central in many program analysis tools, such as compilers, smart language-sensitive editors, and static analysis tools. All techniques presented in this thesis support modular description and efficiency and are capable of handling large programs.
The work is based on Reference Attributed Grammars (RAGs) which combines object-oriented features with declarative programming to specify computations on abstract syntax trees. RAGs have proven useful, e.g., for performing static-semantic analysis of object-oriented languages. We investigate new applications of RAGs, extensions of RAGs in order to cover yet more applications, modularization issues for RAGs, and implementation of RAG extensions.
The thesis consists of an introduction and four papers. The first paper deals with the application of RAGs to a new problem area: program visualization. The second paper describes JastAdd, a practical system for RAGs, based on static aspect-oriented programming and which supports the combination of imperative Java programming with declarative RAG programming. JastAdd has been used for developing practical compilers for full-scale languages. The third paper describes CRAGs, an extension of RAGs allowing circular dependencies and where the evaluator computes fixed-point solutions by iteration. CRAGs open up RAGs for new application areas such as grammar and data flow analyses. The fourth paper deals with extending attribute grammars with collection attributes and circular collection attributes. These attributes allow whole-program properties such as cross-references to be easily specified. A number of evaluation techniques and a number of application areas, including source code metrics, are described. All techniques described in the papers have been implemented and tested in practice. (Less)
Please use this url to cite or link to this publication:
https://lup.lub.lu.se/record/599299
- author
- Magnusson, Eva LU
- supervisor
-
- Görel Hedin LU
- opponent
-
- Ass professor Van Wyk, Eric, University of Minnesota, USA
- organization
- publishing date
- 2007
- type
- Thesis
- publication status
- published
- subject
- keywords
- numerisk analys, Datalogi, control, systems, numerical analysis, Declarative object-oriented programming, attribute grammars, fixed-point computations, Computer science, cross references, system, kontroll
- pages
- 153 pages
- publisher
- Department of Computer Science, Lund University
- defense location
- Room E:1406, E-building Ole Römers väg 3 Lund University Faculty of Engineering
- defense date
- 2007-12-07 10:15:00
- ISBN
- 978-91-628-7306-6
- language
- English
- LU publication?
- yes
- id
- 0395ed0c-8691-4049-b148-b06f6b1279a4 (old id 599299)
- date added to LUP
- 2016-04-01 16:36:17
- date last changed
- 2021-05-05 10:13:54
@phdthesis{0395ed0c-8691-4049-b148-b06f6b1279a4, abstract = {{This thesis deals with techniques for raising the programming level for a particular kind of computations, namely those on abstract syntax trees. Such computations are central in many program analysis tools, such as compilers, smart language-sensitive editors, and static analysis tools. All techniques presented in this thesis support modular description and efficiency and are capable of handling large programs.<br/><br> <br/><br> The work is based on Reference Attributed Grammars (RAGs) which combines object-oriented features with declarative programming to specify computations on abstract syntax trees. RAGs have proven useful, e.g., for performing static-semantic analysis of object-oriented languages. We investigate new applications of RAGs, extensions of RAGs in order to cover yet more applications, modularization issues for RAGs, and implementation of RAG extensions.<br/><br> <br/><br> The thesis consists of an introduction and four papers. The first paper deals with the application of RAGs to a new problem area: program visualization. The second paper describes JastAdd, a practical system for RAGs, based on static aspect-oriented programming and which supports the combination of imperative Java programming with declarative RAG programming. JastAdd has been used for developing practical compilers for full-scale languages. The third paper describes CRAGs, an extension of RAGs allowing circular dependencies and where the evaluator computes fixed-point solutions by iteration. CRAGs open up RAGs for new application areas such as grammar and data flow analyses. The fourth paper deals with extending attribute grammars with collection attributes and circular collection attributes. These attributes allow whole-program properties such as cross-references to be easily specified. A number of evaluation techniques and a number of application areas, including source code metrics, are described. All techniques described in the papers have been implemented and tested in practice.}}, author = {{Magnusson, Eva}}, isbn = {{978-91-628-7306-6}}, keywords = {{numerisk analys; Datalogi; control; systems; numerical analysis; Declarative object-oriented programming; attribute grammars; fixed-point computations; Computer science; cross references; system; kontroll}}, language = {{eng}}, publisher = {{Department of Computer Science, Lund University}}, school = {{Lund University}}, title = {{Object-Oriented Declarative Program Analysis}}, year = {{2007}}, }