.QL: Object-Oriented Queries Made Easy (2008)
Oege De Moor, Damien Sereni, Mathieu Verbaere, Elnar Hajiyev, Pavel Avgustinov, Torbjörn Ekman, ...
Abstract. These notes are an introduction to.QL, an object-oriented query language for any type of structured data. We illustrate the use of.QL in assessing software quality, namely to find bugs, to...
ABSTRACT abc: An extensible AspectJ compiler ∗ (2008)
Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, Oege De Moor, ...
Research in the design of aspect-oriented programming languages requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, new...
Aac Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Bruno Dufour, Christopher Goard, Laurie Hendren, ...
compiler for AspectJ – a workbench for aspect-oriented programming language and compilers research. In OOPSLA ’05:
ABSTRACT CodeQuest: Querying Source Code with DataLog (2008)
Elnar Hajiyev, Mathieu Verbaere, Oege De Moor, Kris De Volder
We describe CodeQuest, a system for querying source code. It combines two previous proposals, namely the use of logic programming and database system. Experiments (on projects ranging from 3KSLOC to...
On the Semantics of Matching Trace Monitoring Patterns (2008)
Pavel Avgustinov, Julian Tibble, Oege De Moor
Abstract. Trace monitor specifications consist of a pattern that is matched against the trace of events of a subject system. We investigate the design choices in defining the semantics of matching...
Aspects and Data Refinement ⋆ (2008)
Pavel Avgustinov, Eric Bodden, Elnar Hajiyev, Oege De Moor, Neil Ongkingco, Damien Sereni, ...
Abstract. We give an introduction to aspect-oriented programming from the viewpoint of data refinement. Some data refinements are conveniently expressed via aspects. Unlike traditional programming...
ABSTRACT JunGL: a Scripting Language for Refactoring (2008)
Mathieu Verbaere, Ran Ettinger, Oege De Moor
Refactorings are behaviour-preserving program transformations, typically for improving the structure of existing code. A few of these transformations have been mechanised in interactive development...
Datalog as a Pointcut Language in Aspect-Oriented Programming (2008)
Elnar Hajiyev, Neil Ongkingco, Pavel Avgustinov, Oege De Moor, Damien Sereni, Julian Tibble, ...
AspectJ’s pointcut language is complex, yet often not expressive enough to directly capture a desired property. Prolog has been suggested as an alternative, but Prolog queries may not terminate,...
Optimising Aspectj, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, ...
AspectJ, an aspect-oriented extension of Java, is becoming increasingly popular. However, not much work has been directed at optimising compilers for AspectJ. Optimising AOP languages provides many...
Pavel Avgustinov Aske, Optimising Aspectj, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, ...
AspectJ, an aspect-oriented extension of Java, is becoming increasingly popular. However, not much work has been directed at optimising compilers for AspectJ. Optimising AOP languages provides many...
First-class Attribute Grammars (2007)
Oege De Moor, Kevin Backhouse, S. Doaitse Swierstra
This paper is a contribution to the ongoing quest for modular descriptions of language processors, with the specic aim of rapidly prototyping domain-specic languages [21]. Some might argue that this...
Stephen Drape, Oege De Moor, Ganesh Sittampalam, Ox Qd
United Kingdom Path logic programming is a modest extension of Prolog for the specification of program transformations. We give an informal introduction to this extension, and we show how it can be...
Abstract Static Analysis of Aspects (2007)
Aspects are a novel programming language feature, to express concerns in program design that crosscut traditional abstraction boundaries. Aspects are specified as pointcut designators (patterns in...
Aiding Dependent Type Checking with Rewrite Rules (2007)
Dependent type checking in Cayenne often fails when the programmer has relied on non-trivial properties of functions that are used in types. For instance, associativity of addition on natural numbers...
Consider the following three code fragments: (2007)
Abstract. This paper presents an algorithm which decides whether it is possible for two optimising transformations to be applied to the same piece of code with the property that applying one...
Common-subexpression Elimination of Conditional Expressions (2007)
Oege De Moor, Jens Peter Secher
Consider a side-eect-free expression | possibly containing conditionals | represented as a directed acyclic graph. Such an expression can be linearised into a tree by introducing let-abstractions for...
Eric Bodden, Mcgill Univeristy, Bernd Finkbeiner, Moonzoo Kim Kaist, Oege De Moor, Klaus Ostermann, ...
Codequest: Scalable source code queries with datalog (2006)
Elnar Hajiyev, Mathieu Verbaere, Oege De Moor
Abstract. Source code querying tools allow programmers to explore relations between different parts of the code base. This paper describes such a tool, named CodeQuest. It combines two previous...
Efficient trace monitoring (2006)
Pavel Avgustinov, Eric Bodden, Elnar Hajiyev, Laurie Hendren, Oege De Moor, Neil Ongkingco, ...
Abstract. A trace monitor observes the sequence of events in a system, and takes appropriate action when a given pattern occurs in that sequence. Aspect-oriented programming provides a convenient...
Efficient Trace Monitoring (2006)
Pavel Avgustinov, Julian Tibble, Eric Bodden, Ondrej Lhotak, Laurie Hendren, Oege De Moor, ...
A trace monitor observes the sequence of actions in a software system, and when it detects that this sequence matches a given pattern, it executes some extra code of its own. Trace monitors are often...
Adding Open Modules to AspectJ (2006)
Neil Ongkingco Pavel, Pavel Avgustinov, Julian Tibble, Laurie Hendren, Oege De Moor, Ganesh Sittampalam
AspectJ does not provide a mechanism to hide implementation details from advice. As a result, aspects are tightly coupled to the implementation of the code they advise, while the behaviour of the...
Understanding Feature Modularity (2006)
Roberto Erick, Lopez Herrejon, Don Batory Supervisor, William Cook, James C. Browne, Dewayne Perry, ...
To my family
Efficient trace monitoring (2006)
Pavel Avgustinov, Eric Bodden, Elnar Hajiyev, Laurie Hendren, Oege De Moor, Damien Sereni, ...
Abstract. A trace monitor observes the sequence of events in a system, and takes appropriate action when a given pattern occurs in that sequence. Aspect-oriented programming provides a convenient...
Adding Trace Matching with Free Variables to AspectJ (2005)
Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Oege De Moor, ...
An aspect observes the execution of a base program; when certain actions occur, the aspect runs some extra code of its own. In the AspectJ language, the observations that an aspect can make are...
Adding Open Modules, Neil Ongkingco, Pavel Avgustinov, Julian Tibble, Laurie Hendren, Oege De Moor, ...
AspectJ does not provide a mechanism to hide implementation details from advice. As a result, aspects are tightly coupled to the implementation of the code they advise, while the behaviour of the...
abc: An extensible AspectJ compiler (2005)
Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Ondrej Lhotak, Oege De Moor, ...
Research in the design of aspect-oriented programming languages requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, new...
Adding Trace Matching, Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, ...
An aspect observes the execution of a base program; when certain actions occur, the aspect runs some extra code of its own. In the AspectJ language, the observations that an aspect can make are...
Adding Trace Matching with Free Variables to AspectJ (2005)
Chris Allan Pavel, Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, ...
An aspect observes the execution of a base program; when certain actions occur, the aspect runs some extra code of its own. In the AspectJ language, the observations that an aspect can make are...
abc : An extensible AspectJ compiler (2005)
Pavel Avgustinov Aske, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, ...
Research in the design of aspect-oriented programming languages requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, new...
3.1 Definition of Traces.......................................... 14 (2005)
Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Oege De Moor, ...
Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, Oege De Moor, ...
2 An overview of AspectJ 4
Measuring the dynamic behaviour of aspectj programs (2004)
Bruno Dufour, Christopher Goard, Laurie Hendren, Oege De Moor, Ganesh Sittampalam, Clark Verbrugge
This paper proposes and implements a rigorous method for studying the dynamic behaviour of AspectJ programs. As part of this methodology several new metrics specific to AspectJ programs are proposed...
The abc scanner and parser, including an LALR(1) grammar for (2004)
Laurie Hendren, Oege De Moor, Aske Simon Christensen
The purpose of this document is to give a clear explanation of the scanner and parser for abc. In defining the scanner and lexer our goal was to come up with clear rules for tokens and to express the...
Measuring the dynamic behaviour of aspectj programs (2004)
This paper proposes and implements a rigorous method for studying the dynamic behaviour of AspectJ programs. As part of this methodology several new metrics specific to AspectJ programs are proposed...
Incremental Execution of Transformation Specifications (2004)
Ganesh Sittampalam Ganesh, Oege De Moor, Ken Friis Larsen
We aim to specify program transformations in a declarative style, and then to generate executable program transformers from such specifications. Many transformations require non-trivial program...
Optimising Aspectj, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, ...
AspectJ, an aspect-oriented extension of Java, is becoming increasingly popular. However, not much work has been directed at optimising compilers for AspectJ. Optimising AOP languages provides many...
abc: An extensible AspectJ compiler (2004)
Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, ...
Research in the design of aspect-oriented programming languages requires a workbench that facilitates easy experimentation with new language features and implementation techniques. In particular, new...
Building the abc AspectJ compiler with Polyglot and Soot (2004)
Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, ...
Aspect-oriented programming and the development of aspect-oriented languages is rapidly gaining momentum, and the advent of this new kind of programming language provides interesting challenges for...
Building The Abc, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, ...
Aspect-oriented programming and the development of aspect-oriented languages are rapidly gaining momentum, and the advent of this new kind of programming language provides interesting challenges for...
Measuring the dynamic behaviour of aspectj programs (2004)
Bruno Dufour, Oege De Moor, Christopher Goard, Ganesh Sittampalam, Laurie Hendren
This paper proposes and implements a rigorous method for studying the dynamic behaviour of AspectJ programs. As part of this methodology several new metrics specific to AspectJ programs are proposed...
The abc Group abc: An extensible AspectJ compiler (2004)
Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, Oege De Moor, ...
Optimising Aspectj, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhoták, ...
Bruno Dufour, Christopher Goard, Laurie Hendren, Clark Verbrugge, Oege De Moor, Ganesh Sittampalam
2 A brief introduction to AspectJ 4 2.1 Join points, pointcut and advice...................................... 5
Universal regular path queries (2003)
Oege De Moor, David Lacey, Eric Van Wyk
Given are a directed edge-labelled graph G with a distinguished node n0, and a regular expression P which may contain variables. We wish to compute all substitutions φ (of symbols for variables),...
Universal regular path queries (2003)
Oege De Moor, David Lacey, Eric Van Wyk
Given are a directed edge-labelled graph G with a distinguished node n 0, and a regular expression P which may contain variables. We wish to compute all substitutions (of symbols for variables),...
Universal regular path queries (2003)
Oege De Moor, David Lacey, Eric Van Wyk
Given are a directed edge-labelled graph G with a distinguished vertex v 0, and a regular expression P which may contain variables. It is required to compute substitutions (of symbols for variables),...
Universal regular path queries (2003)
Oege De Moor, David Lacey, Eric Van Wyk
Given are a directed edge-labelled graph G with a distinguished vertex v 0, and a regular expression P which may contain variables. It is required to compute substitutions (of symbols for variables),...
Programming Tools Group Measuring the Dynamic Behaviour of AspectJ Programs (2003)
Bruno Dufour, Christopher Goard, Laurie Hendren, Clark Verbrugge, Oege De Moor, Ganesh Sittampalam
Forwarding in attribute grammars for modular language design (2002)
Eric Van Wyk, Oege De Moor, Kevin Backhouse, Paul Kwiatkowski
Abstract. Forwarding is a technique for providing default attribute definitions in attribute grammars that is helpful in the modular implementation of programming languages. It complements existing...
Forwarding in attribute grammars for modular language design (2002)
Eric Van Wyk, Oege De Moor, Kevin Backhouse, Paul Kwiatkowski
Oege De Moor, Stephen Drape, David Lacey, Ganesh Sittampalam
We aim to specify program transformations in a declarative style, and then to generate ecient program transformers from such specications. Many transformations require nontrivial program analysis to...
Forwarding in attribute grammars for modular language design (2002)
Eric Van Wyk, Oege De Moor, Kevin Backhouse, Paul Kwiatkowski
Abstract. Forwarding is a technique for providing default attribute definitions in attribute grammars that is helpful in the modular implementation of programming languages. It complements existing...
Forwarding in Attribute Grammars for Modular (2002)
Language Design Eric, Eric Van Wyk, Oege De Moor, Kevin Backhouse, Paul Kwiatkowski
Forwarding is a technique for providing default attribute definitions in attribute grammars that is helpful in the modular implementation of programming languages. This paper introduces forwarding,...
Intentional programming: a host of language features (2001)
Eric Van Wyk, Oege De Moor, Ganesh Sittampalam, Ivan Sanabria Piretti, Kevin Backhouse, Paul Kwiatkowski
Programming languages and programming tasks are rarely a perfect t: often a program could be much claried by using a number of tailored language features, but the cost of introducing those features...
Imperative program transformation by rewriting (2001)
Abstract. We present a method of specifying standard imperative program optimisations as a rewrite system. To achieve this we have extended the idea of matching sub-terms in expressions with simple...
Imperative program transformation by rewriting (2001)
Abstract. We present a method of specifying standard imperative program optimisations as a rewrite system. To achieve this we have extended the idea of matching sub-terms in expressions with simple...
Compiling embedded languages (2000)
Conal Elliott, Sigbjørn Finne, Oege De Moor
Abstract. Functional languages are particularly well-suited to the implementation of interpreters for domain-specific embedded languages (DSELs). We describe an implemented technique for producing...
First-class Attribute Grammars (2000)
Oege De Moor, Kevin Backhouse, S. Doaitse Swierstra
This paper is a contribution to the ongoing quest for modular descriptions of language processors, with the specific aim of rapidly prototyping domain-specific languages [21]. Some might argue that...
Pointwise Relational Programming (2000)
The point-free relational calculus has been very successful as a language for discussing general programming principles. However, when it comes to specific applications, the calculus can be rather...
Pointwise Relational Programming (2000)
The point-free relational calculus has been very successful as a language for discussing general programming principles. However, when it comes to specific applications, the calculus can be rather...
Pointwise Relational Programming (2000)
. The point-free relational calculus has been very successful as a language for discussing general programming principles. However, when it comes to specic applications, the calculus can be rather...
Container Types Categorically (2000)
A program derivation is said to be polytypic if some of its parameters are data types. Often these data types are container types, whose elements store data. Polytypic program derivations necessitate...
Container Types Categorically (2000)
A program derivation is said to be polytypic if some of its parameters are data types. Often these data types are container types, whose elements store data. Polytypic program derivations necessitate...
Compiling Embedded Languages (2000)
Conal Elliott, Sigbjørn Finne, Oege De Moor
Functional languages are particularly well-suited to the implementation of interpreters for domain-specific embedded languages (DSELs). We describe an implemented technique for producing optimizing...
Compiling Embedded Languages (2000)
Conal Elliott, Sigbjørn Finne, Oege De Moor
Functional languages are particularly well-suited to the implementation of interpreters for domain-specific embedded languages (DSELs). We describe an implemented framework for producing optimizing...
First-class Attribute Grammars (2000)
Oege De Moor, Kevin Backhouse, S. Doaitse Swierstra
This paper is a contribution to the ongoing quest for modular descriptions of language processors, with the specific aim of rapidly prototyping domain-specific languages [21]. Some might argue that...
Abstract Efficient Image Manipulation via Run-time Compilation (1999)
Conal Elliott, Oege De Moor, Sigbjorn Finne, Conal Elliott, Oege De Moor, Sigbjorn Finne, ...
An image manipulation system can be thought of as a domain-specific programming language: by composing and manipulating pictures, the user builds up an expression in such a programming language. Each...
Higher-order Matching for Program Transformation (1999)
Oege De Moor, Ganesh Sittampalam
We present a simple, practical algorithm for higher order matching in the context of automatic program transformation. Our algorithm finds more matches than the standard second order matching...
Aspect-Oriented Compilers (1999)
Oege De Moor, Simon Peyton Jones, Eric Van Wyk
. Aspect-oriented programming provides the programmer with means to cross-cut conventional program structures, in particular the class hierarchies of object-oriented programming. This paper studies...
Generic Programming With Relations and Functors (1999)
Richard Bird, Oege De Moor, Paul Hoogendijk
This paper explores the idea of generic programming in which programs are parameterised by data types. Part of the constructive theory of lists, specically the part dealing with properties of...
Pointwise Relational Program Derivation (1999)
The point free relational calculus has proved quite successful in the derivation of general programming principles [1, 5]. When applied to specific examples, however, it can be somewhat painful to...
Higher-order Matching for Program Transformation (1999)
Oege De Moor, Ganesh Sittampalam
We present a simple, practical algorithm for higher order matching in the context of automatic program transformation. Our algorithm finds more matches than the standard second order matching...
Modeless Structure Editing (1999)
this paper we honour Tony by building a simple model of structure editing to serve as a basis for the design of a family of editors. Structure editors make it easy to perform edit actions in which...
First-class Attribute Grammars (1999)
This paper is a contribution to the ongoing quest for modular descriptions of language processors, with the specific aim of rapidly prototyping domain-specific languages [31]. Some might argue that...
Aspect-Oriented Compilers (1999)
Oege De Moor, Simon Peyton-Jones, Eric Van Wyk
Aspect-oriented programming provides the programmer with means to cross-cut conventional program structures, in particular the class hierarchies of object-oriented programming. This paper studies the...
Bridging the Algorithm Gap: A Linear-time Functional Program for Paragraph Formatting (1999)
In the constructive programming community it is commonplace to see formal developments of textbook algorithms. In the algorithm design community, on the other hand, it may be well known that the...
Aspect-Oriented Compilers (1999)
Oege De Moor, Simon Peyton-jones
Lazy evaluation allows compiler writers to ignore a separation into passes, and to focus on the logical structure of their compiler instead. This is also a feature of attribute grammars, which can be...
Higher-order Matching for Program Transformation (1999)
Oege De Moor, Ganesh Sittampalam
We present a simple, practical algorithm for higher-order matching in the context of automatic program transformation. Our algorithm finds more matches than the standard second-order matching...
Generic Program Transformation (1998)
Oege De Moor, Ganesh Sittampalam
ion versus efficiency For concreteness, let us first examine a number of examples of the type of optimisation that we wish to capture, and the kind of programs on which they operate. This will give...
Generic Program Transformation (1998)
Oege De Moor, Ganesh Sittampalam
ion versus efficiency For concreteness, let us first examine a number of examples of the type of optimisation that we wish to capture, and the kind of programs on which they operate. This will give...
Bridging the algorithm gap: A linear-time functional program for paragraph formatting (1997)
In the constructive programming community it is commonplace to see formal developments of textbook algorithms. In the algorithm design community, on the other hand, it may be well known that the...
Bridging the Algorithm Gap: A Linear-time Functional Program for Paragraph Formatting (1997)
In the constructive programming community it is commonplace to see formal developments of textbook algorithms. In the algorithm design community, on the other hand, it may be well known that the...
Compositional Logic Programming (1996)
This paper is intended to stimulate discussion on the design of a truly compositional logic language, which is at the same time as simple as possible. We illustrate our wishful thinking by two...
Compositional Logic Programming (1996)
This paper is intended to stimulate discussion on the design of a truly compositional logic language, which is at the same time as simple as possible. We illustrate our wishful thinking by two...
An Exercise in Polytypic Program Derivation: repmin (1996)
A program derivation is said to be polytypic if some of its parameters are data types. The repmin problem is to replace all elements of a tree of numbers by the minimum element, making only a single...
A program derivation is said to be polytypic if some of its parameters are data types. Polytypic program derivations necessitate a general, non-inductive definition of `data type'. Here we...
A Generic Program for Sequential Decision Processes (1995)
This paper is an attempt to persuade you of my viewpoint by presenting a novel generic program for a certain class of optimisation problems, named sequential decision processes. This class was...
Between Dynamic Programming and Greedy: Data Compression (1995)
The derivation of certain algorithms can be seen as a hybrid form of dynamic programming and the greedy paradigm. We present a generic theorem about such algorithms, and show how it can be applied to...
Inductive Data Types for Predicate Transformers (1995)
Introduction Modern functional programming languages [5, 6] and specification formalisms [3] are built around the notion of inductive data types and homomorphisms on these data types. Such...
An Algebraic Construction of Predicate Transformers (1994)
Paul Gardiner, Clare Martin, Oege De Moor
. In this paper we present an algebraic construction of monotonic predicate transformers, using a categorical construction which is similar to the algebraic construction of the integers from the...
Virtual Data Structures (1993)
Doaitse Swierstra, Oege De Moor
this paper is to demonstrate a number of techniques which may be used in calculating algorithms for sequence-oriented problems. It may be considered as a further step in the development of a...
From Dynamic Programming to Greedy Algorithms (1992)
A calculus of relations is used to reason about specifications and algorithms for optimisation problems. It is shown how certain greedy algorithms can be seen as refinements of dynamic programming....
Solving Optimisation Problems with Catamorphisms (1992)
. This paper contributes to an ongoing effort to construct a calculus for deriving programs for optimisation problems. The calculus is built around the notion of initial data types and catamorphisms...