Visible to the public Biblio

Filters: Keyword is attribute grammars  [Clear All Filters]
2018-06-07
von Hof, Vincent, Fögen, Konrad, Kuchen, Herbert.  2017.  Detecting Spring Configurations Errors. Proceedings of the Symposium on Applied Computing. :1505–1512.
Dependency injection frameworks such as the Spring framework rely on dynamic language features of Java. Errors arising from the improper usage of these features bypass the compile-time checks of the Java compiler. This paper discusses the application of static code analysis as a means to restore compile-time checking for Spring-related configuration errors. First, possible errors in the configuration of Spring are identified and classified. Attributed grammars are applied in order to formally detect the errors and a prototypical compiler extension is implemented based on Java's pluggable annotation processing API.
2018-03-05
Kaminski, Ted, Van Wyk, Eric.  2017.  Ensuring Non-Interference of Composable Language Extensions. Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering. :163–174.

Extensible language frameworks aim to allow independently-developed language extensions to be easily added to a host programming language. It should not require being a compiler expert, and the resulting compiler should "just work" as expected. Previous work has shown how specifications for parsing (based on context free grammars) and for semantic analysis (based on attribute grammars) can be automatically and reliably composed, ensuring that the resulting compiler does not terminate abnormally. However, this work does not ensure that a property proven to hold for a language (or extended language) still holds when another extension is added, a problem we call interference. We present a solution to this problem using of a logical notion of coherence. We show that a useful class of language extensions, implemented as attribute grammars, preserve all coherent properties. If we also restrict extensions to only making use of coherent properties in establishing their correctness, then the correctness properties of each extension will hold when composed with other extensions. As a result, there can be no interference: each extension behaves as specified.