Skip to main content

Lund University Publications

LUND UNIVERSITY LIBRARIES

Contributions to Declarative Implementation of Static Program Analysis

Öqvist, Jesper LU (2018) In LU-CS-DISS 2019(01).
Abstract
Programming languages are ever evolving, with new languages being invented to solve new problems, and old languages being extended to solve old problems in new ways. With the continued evolution of programming languages, and with new and improved static program analyses, we need flexible systems for building our static analyses and compilers. Declarative programming with Reference Attribute Grammars (RAGs) is a fruitful approach for building extensible and maintainable static program analyses and compilers. With declarative programming, code is easier to write, easier to understand, and easier to extend.

This thesis presents contributions to declarative static program analysis implementation with RAGs. In particular, I have... (More)
Programming languages are ever evolving, with new languages being invented to solve new problems, and old languages being extended to solve old problems in new ways. With the continued evolution of programming languages, and with new and improved static program analyses, we need flexible systems for building our static analyses and compilers. Declarative programming with Reference Attribute Grammars (RAGs) is a fruitful approach for building extensible and maintainable static program analyses and compilers. With declarative programming, code is easier to write, easier to understand, and easier to extend.

This thesis presents contributions to declarative static program analysis implementation with RAGs. In particular, I have developed new language extensions for the Java programming language, as well as new static analyses and tools for Java, based on the extensible Java compiler ExtendJ. Language extensions include an implementation of Java 7, and a new programming mechanism, multiplicities. A new static analysis-based tool presented in this thesis is a regression test selection tool, which reduces testing time for Java software development.
My contributions also include new design patterns for declaratively specifying static analyses in RAGs, and significant improvements to the ExtendJ compiler. My work in ExtendJ includes developing the first version of the compiler with fully declarative static analysis.
This dissertation also includes contributions to RAGs, including new algorithms for concurrent attribute evaluation with implementation in the JastAdd metacompiler. With these new algorithms, it is possible to parallelize any RAG-implemented analysis. In particular, I parallelized static analysis in the ExtendJ compiler to achieve a twofold speedup and orders of magnitude reduction of latency. (Less)
Please use this url to cite or link to this publication:
author
supervisor
opponent
  • Senior Research Scientist Lawall, Julia, INRIA/Lip6, Frankrike
organization
publishing date
type
Thesis
publication status
published
subject
in
LU-CS-DISS
volume
2019
issue
01
pages
197 pages
publisher
Department of Computer Science, Lund University
defense location
Hörsal E:1406, E-huset, Ole Römers väg 3, Lund University, Faculty of Engineering LTH
defense date
2019-01-18 13:15:00
ISSN
1404-1219
ISBN
978-91-7753-944-5
978-91-7753-945-2
project
Contributions to Declarative Implementation of Static Program Analysis
ELLIIT LU P05: Scalable Language Tools for Cyber-Physical Systems
language
English
LU publication?
yes
id
82b210fc-6d15-4f0a-82ff-24b024925d23
date added to LUP
2018-12-13 11:51:18
date last changed
2021-05-06 16:43:29
@phdthesis{82b210fc-6d15-4f0a-82ff-24b024925d23,
  abstract     = {{Programming languages are ever evolving, with new languages being invented to solve new problems, and old languages being extended to solve old problems in new ways. With the continued evolution of programming languages, and with new and improved static program analyses, we need flexible systems for building our static analyses and compilers. Declarative programming with Reference Attribute Grammars (RAGs) is a fruitful approach for building extensible and maintainable static program analyses and compilers. With declarative programming, code is easier to write, easier to understand, and easier to extend.<br/><br/>This thesis presents contributions to declarative static program analysis implementation with RAGs. In particular, I have developed new language extensions for the Java programming language, as well as new static analyses and tools for Java, based on the extensible Java compiler ExtendJ. Language extensions include an implementation of Java 7, and a new programming mechanism, multiplicities. A new static analysis-based tool presented in this thesis is a regression test selection tool, which reduces testing time for Java software development.<br/>My contributions also include new design patterns for declaratively specifying static analyses in RAGs, and significant improvements to the ExtendJ compiler. My work in ExtendJ includes developing the first version of the compiler with fully declarative static analysis.<br/>This dissertation also includes contributions to RAGs, including new algorithms for concurrent attribute evaluation with implementation in the JastAdd metacompiler. With these new algorithms, it is possible to parallelize any RAG-implemented analysis. In particular, I parallelized static analysis in the ExtendJ compiler to achieve a twofold speedup and orders of magnitude reduction of latency.}},
  author       = {{Öqvist, Jesper}},
  isbn         = {{978-91-7753-944-5}},
  issn         = {{1404-1219}},
  language     = {{eng}},
  month        = {{12}},
  number       = {{01}},
  publisher    = {{Department of Computer Science, Lund University}},
  school       = {{Lund University}},
  series       = {{LU-CS-DISS}},
  title        = {{Contributions to Declarative Implementation of Static Program Analysis}},
  url          = {{https://lup.lub.lu.se/search/files/55469024/thesis_joqvist_final.pdf}},
  volume       = {{2019}},
  year         = {{2018}},
}