Oliveira and Cook (2012) and Oliveira et al. (2013) have recently introduced object algebras as a program structuring technique to improve the modularity and extensibility of programs. We analyze the relationship between object algebras and attribute grammars (AGs), a formalism to augment context-free grammars with attributes. We present an an extension of the object algebra technique with which the full class of L-attributed grammars – an important class of AGs that corresponds to one-pass compilers – can be encoded in Scala. The encoding is modular (attributes can be defined and type-checked separately), scalable (the size of the encoding is linear in the size of the AG specification) and compositional (each AG artefact is represented as a semantic object of the host language). To validate these claims, we have formalized the encoding and we have re-implemented a one-pass compiler for a subset of C with our technique. We also discuss how advanced features of modern AG systems, such as higher-order and parameterized attributes, reference attributes, and forwarding can be supported.
Thu 23 OctDisplayed time zone: Tijuana, Baja California change
13:30 - 15:00 | |||
13:30 22mTalk | Distributed REScala: An Update Algorithm for Distributed Reactive Programming OOPSLA Joscha Drechsler Technische Universität Darmstadt, Guido Salvaneschi TU Darmstadt, A: Ragnar Mogk Technische Universität Darmstadt, A: Mira Mezini Technical University of Darmstadt Link to publication | ||
13:52 22mTalk | From Object Algebras to Attribute Grammars OOPSLA Tillmann Rendel University of Marburg, Jonathan Immanuel Brachthäuser University of Marburg, Klaus Ostermann University of Marburg Link to publication | ||
14:15 22mTalk | Late Data Layout: Unifying Data Representation Transformations OOPSLA Link to publication | ||
14:37 22mTalk | i3QL: Language-Integrated Live Data Views OOPSLA Ralf Mitschke Technical University of Darmstadt, Sebastian Erdweg TU Darmstadt, Mirko Köhler Technical University of Darmstadt, Mira Mezini Technical University of Darmstadt, Guido Salvaneschi TU Darmstadt Link to publication |