
Emma SöderbergLund University | LU · Department of Computer Science
Emma Söderberg
PhD
About
30
Publications
7,653
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
597
Citations
Citations since 2017
Introduction
Additional affiliations
January 2019 - present
March 2018 - December 2018
June 2016 - February 2018
Publications
Publications (30)
Static checker frameworks support software developers by automatically discovering bugs that fit general-purpose bug patterns. These frameworks ship with hundreds of detectors for such patterns and allow developers to add custom detectors for their own projects. However, existing frameworks generally encode detectors in imperative specifications, w...
Just like current software systems, conceptual models are characterised by increasing complexity and rate of change. Yet, these models only become useful if they can be continuously evaluated, validated and serialized. To achieve sufficiently low response times for large models, incremental analysis is required. Reference Attribute Grammars (RAGs)...
The importance of user-centric design methods in the design of programming tools is now well accepted. These methods depend on creating a feedback loop between the designers and their users, providing data about developers, their needs and behaviour gathered through various means. These include controlled experiments, field observations, as well as...
Just like current software systems, models are characterised by increasing complexity and rate of change. Yet, these models only become useful if they can be continuously evaluated and validated. To achieve sufficiently low response times for large models, incremental analysis is required. Reference Attribute Grammars (RAGs) offer mechanisms to per...
Employing lightweight, tool-based code review of code changes (aka modern code review) has become the norm for a wide variety of open-source and industrial systems. In this paper, we make an exploratory investigation of modern code review at Google. Google introduced code review early on and evolved it over the years; our study sheds light on why G...
Reference attribute grammars (RAGs) provide a practical declarative means to implement programming language compilers and other tools. RAGs have previously been extended to support nonterminal attributes (also known as higher-order attributes), circular attributes, and context-dependent declarative rewrites of the abstract syntax tree. In this prev...
Reference attribute grammars (RAGs) provide a practical declarative means to implement programming language compilers and other tools. RAGs have previously been extended to support both circular attributes and context-dependent declarative rewrites of the abstract syntax tree. In this previous work, dependencies between circular attributes and rewr...
We have developed a new approach for implementing precise intraprocedural control-flow and dataflow analyses at the abstract syntax tree level. Our approach is declarative, making use of reference attribute grammars augmented with circular attributes and collection attributes. This results in concise executable specifications of the analyses, allow...
Integrated Development Environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. Unlike conventional parsing algorithms, scannerless generalized-LR parsing supports the full set of context-free grammars, which is closed under composition, and hence can parse language...
A semantic editor, providing services like completion and code browsing, can help users to quickly develop high-quality source code. However, a lot of languages still lack semantic editor support due to the difficulty and costs of development. Tool generation and reuse can greatly alleviate this development task. Specifically, tool generation from...
Reference attribute grammars (RAGs) can be used to express semantics as super-imposed graphs on top of abstract syntax trees
(ASTs). A RAG-based AST can be used as the in-memory model providing semantic information for software language tools such
as compilers, refactoring tools, and meta-modeling tools. RAG performance is based on dynamic attribut...
In this short research plan we address the problem of generating modern semantic editors from formal specifications. We aim to tackle this problem using reference attribute grammars.
Integrated development environments (IDEs) increase programmer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. A heavy burden lies on developers of new languages to provide adequate IDE support. Code generation techniques provide a viable, efficient approach to semi-automatically produce IDE plug...
We discuss our current work on building an IDE for Mod- elica, and how we intend to support renaming. Our current implementation of the compiler and the name completion support is done using reference attribute grammars, imple- mented in the JastAdd metacompilation system. For renam- ing we plan to follow the approach of inverse lookups, devel- ope...
Parser generators are an indispensable tool for rapid language development. However, they often fall short of the finesse
of a hand-crafted parser, built with the language semantics in mind. One area where generated parsers have provided unsatisfactory
results is that of error recovery. Good error recovery is both natural, giving recovery suggestio...
Integrated development environments (IDEs) increase pro- grammer productivity, providing rapid, interactive feedback based on the syntax and semantics of a language. A heavy burden lies on developers of new languages to provide ad- equate IDE support. Code generation techniques provide a viable, efficient approach to semi-automatically produce IDE...
We have implemented intraprocedural control-flow and data-flow analysis of Java source code in a declarative manner, using reference attribute grammars augmented with circular attributes and collection attributes. Our implementation is built on top of the JastAdd Extensible Java Compiler and we have run the analyses on medium-sized Java programs. W...
We present an architecture supporting ad-hoc composition of pervasive services, an open-source framework that implements it, and the key design principles behind it. The architecture focuses on direct human interaction, supporting combination of devices and services that are not explicitly designed to work together. The focus is on local networks,...
Interactive development environments (IDEs) increase programmer productivity, but unfortunately also the burden on language implementors since sophisticated tool support is expected even for small domain-specific languages. Our goal is to alleviate that burden, by generating IDEs from high-level language specifications using the JastAdd meta-compil...
Projects
Project (1)