Contributions to Declarative Implementation of Static Program Analysis

Research output: ThesisDoctoral Thesis (compilation)


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.


Research areas and keywords

Subject classification (UKÄ) – MANDATORY

  • Computer Science
Original languageEnglish
Awarding Institution
Supervisors/Assistant supervisor
Award date2019 Jan 18
Place of PublicationLund
  • Department of Computer Science, Lund University
Print ISBNs978-91-7753-944-5
Electronic ISBNs978-91-7753-945-2
Publication statusPublished - 2018 Dec 19
Publication categoryResearch

Bibliographic note

Defence details Date: 2019-01-18 Time: 13:15 Place: Hörsal E:1406, E-huset, Ole Römers väg 3, Lund University, Faculty of Engineering LTH External reviewer(s) Name: Lawall, Julia Title: Senior Research Scientist Affiliation: INRIA/Lip6, Frankrike ---

Total downloads

No data available

Related research output

Jesper Öqvist & Görel Hedin, 2017 Oct 23, Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering. Association for Computing Machinery (ACM), p. 151-162 12 p.

Research output: Chapter in Book/Report/Conference proceedingPaper in conference proceeding

Jesper Öqvist & Görel Hedin, 2017 Oct 18, Department of Computer Science, Lund University. 20 p. (Technical report, LU-CS-TR; vol. 2017-254, no. Report 103)

Research output: Book/ReportReport

Jesper Öqvist, Görel Hedin & Boris Magnusson, 2016 Aug 29, Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools. Association for Computing Machinery (ACM), 5

Research output: Chapter in Book/Report/Conference proceedingPaper in conference proceeding

View all (5)

Related projects

Jesper Öqvist, Görel Hedin, Boris Magnusson & Emma Söderberg

Swedish Research Council


Project: DissertationIndividual research project

View all (2)