publications: - title: "More Haste, Less Speed: Lazy Versus Eager Evaluation" author: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Geraint Jones" link: "https://researchr.org/alias/geraint-jones" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1997" tags: - "laziness" researchr: "https://researchr.org/publication/BirdJM97" cites: 0 citedby: 0 journal: "Journal of Functional Programming" volume: "7" number: "5" pages: "541-547" kind: "article" key: "BirdJM97" - title: "codeQuest: Scalable Source Code Queries with Datalog" author: - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2006" doi: "http://dx.doi.org/10.1007/11785477_2" 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 proposals, namely the use of logic programming and database systems. As the query language we use safe Datalog, which was originally introduced in the theory of databases. That provides just the right level of expressiveness; in particular recursion is indispensable for source code queries. Safe Datalog is like Prolog, but all queries are guaranteed to terminate, and there is no need for extra-logical annotations. Our implementation of Datalog maps queries to a relational database system. We are thus able to capitalise on the query optimiser provided by such a system. For recursive queries we implement our own optimisations in the translation from Datalog to SQL. Experiments confirm that this strategy yields an efficient, scalable code querying system. " links: doi: "http://dx.doi.org/10.1007/11785477_2" tags: - "programming languages" - "Prolog" - "rule-based" - "translation" - "relational database" - "SQL" - "source-to-source" - "logic programming" - "programming" - "database" - "logic" - "Datalog" - "open-source" - "query language" researchr: "https://researchr.org/publication/HajiyevVM06" cites: 43 citedby: 1 pages: "2-27" booktitle: "ECOOP 2006 - Object-Oriented Programming, 20th European Conference, Nantes, France, July 3-7, 2006, Proceedings" editor: - name: "Dave Thomas" link: "https://researchr.org/alias/dave-thomas" volume: "4067" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-35726-2" kind: "inproceedings" key: "HajiyevVM06" - title: "Aspects and Data Refinement" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Eric Bodden" link: "http://www.bodden.de/" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2006" doi: "http://dx.doi.org/10.1007/11783596_3" links: doi: "http://dx.doi.org/10.1007/11783596_3" tags: - "refinement" - "data-flow" researchr: "https://researchr.org/publication/AvgustinovBHMOSST06" cites: 0 citedby: 0 pages: "5-9" booktitle: "Mathematics of Program Construction, 8th International Conference, MPC 2006, Kuressaare, Estonia, July 3-5, 2006, Proceedings" editor: - name: "Tarmo Uustalu" link: "https://researchr.org/alias/tarmo-uustalu" volume: "4014" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-35631-2" kind: "inproceedings" key: "AvgustinovBHMOSST06" - title: "Adding trace matching with free variables to AspectJ" author: - name: "Chris Allan" link: "https://researchr.org/alias/chris-allan" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://doi.acm.org/10.1145/1094811.1094839" links: doi: "http://doi.acm.org/10.1145/1094811.1094839" tags: - "AspectJ" researchr: "https://researchr.org/publication/AllanACHKLMSST05" cites: 0 citedby: 0 pages: "345-364" booktitle: "Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, October 16-20, 2005, San Diego, CA, USA" editor: - name: "Ralph E. Johnson" link: "http://st-www.cs.illinois.edu/users/johnson/" - name: "Richard P. Gabriel" link: "http://www.dreamsongs.com/RPG.html" publisher: "ACM" isbn: "1-59593-031-0" kind: "inproceedings" key: "AllanACHKLMSST05" - title: "Preface" author: - name: "Brian M. Barry" link: "https://researchr.org/alias/brian-m.-barry" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2004" doi: "http://dx.doi.org/10.1016/j.entcs.2004.02.043" links: doi: "http://dx.doi.org/10.1016/j.entcs.2004.02.043" researchr: "https://researchr.org/publication/BarryM04" cites: 0 citedby: 0 journal: "Electronic Notes in Theoretical Computer Science" volume: "107" pages: "1-5" kind: "article" key: "BarryM04" - title: "A Generic Program for Sequential Decision Processes" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1995" tags: - "generic programming" researchr: "https://researchr.org/publication/Moor95" cites: 0 citedby: 0 pages: "1-23" booktitle: "Programming Languages: Implementations, Logics and Programs, 7th International Symposium, PLILP 95, Utrecht, The Netherlands, September 20-22, 1995, Proceedings" editor: - name: "Manuel V. Hermenegildo" link: "https://researchr.org/alias/manuel-v.-hermenegildo" - name: "S. Doaitse Swierstra" link: "http://www.cs.uu.nl/staff/doaitse.html" volume: "982" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-60359-X" kind: "inproceedings" key: "Moor95" - title: "Specifying and implementing refactorings" author: - name: "Max Schäfer" link: "http://www.comlab.ox.ac.uk/people/Max.Schaefer/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2010" doi: "http://doi.acm.org/10.1145/1869459.1869485" links: doi: "http://doi.acm.org/10.1145/1869459.1869485" dblp: "http://dblp.uni-trier.de/rec/bibtex/conf/oopsla/SchaferM10" tags: - "refactoring" researchr: "https://researchr.org/publication/SchaferMOOPSLA2010" cites: 0 citedby: 0 pages: "286-301" booktitle: "Proceedings of the 25th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2010, October 17-21, 2010, Reno/Tahoe, Nevada, USA" editor: - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" - name: "Siobhán Clarke" link: "https://www.cs.tcd.ie/Siobhan.Clarke/" - name: "Martin C. Rinard" link: "https://researchr.org/alias/martin-c.-rinard" address: "Reno/Tahoe, Nevada" publisher: "ACM" isbn: "978-1-4503-0203-6" kind: "inproceedings" key: "SchaferMOOPSLA2010" - title: "Synthesising graphics card programs from DSLs" author: - name: "Luke Cartey" link: "https://researchr.org/alias/luke-cartey" - name: "Rune Lyngso" link: "https://researchr.org/alias/rune-lyngso" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2012" doi: "http://doi.acm.org/10.1145/2254064.2254080" abstract: "Over the last five years, graphics cards have become a tempting target for scientific computing, thanks to unrivaled peak performance, often producing a runtime speed-up of x10 to x25 over comparable CPU solutions. However, this increase can be difficult to achieve, and doing so often requires a fundamental rethink. This is especially problematic in scientific computing, where experts do not want to learn yet another architecture. In this paper we develop a method for automatically parallelising recursive functions of the sort found in scientific papers. Using a static analysis of the function dependencies we identify sets - partitions - of independent elements, which we use to synthesise an efficient GPU implementation using polyhedral code generation techniques. We then augment our language with DSL extensions to support a wider variety of applications, and demonstrate the effectiveness of this with three case studies, showing significant performance improvement over equivalent CPU methods, and similar efficiency to hand-tuned GPU implementations." links: doi: "http://doi.acm.org/10.1145/2254064.2254080" "url": "http://doi.acm.org/10.1145/2254064.2254080" tags: - "programming languages" - "program partitioning" - "program analysis" - "case study" - "architecture" - "analysis" - "static analysis" - "code generation" - "DSL" - "partitioning" researchr: "https://researchr.org/publication/Cartey2012" cites: 0 citedby: 0 pages: "121-132" booktitle: "Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation" series: "PLDI '12" address: "New York, NY, USA" publisher: "ACM" isbn: "978-1-4503-1205-9" kind: "inproceedings" key: "Cartey2012" - title: "Forwarding in Attribute Grammars for Modular Language Design" author: - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Kevin Backhouse" link: "https://researchr.org/alias/kevin-backhouse" - name: "Paul Kwiatkowski" link: "https://researchr.org/alias/paul-kwiatkowski" year: "2002" doi: "http://link.springer.de/link/service/series/0558/bibs/2304/23040128.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/2304/23040128.htm" tags: - "attribute grammars" - "language design" - "design" - "grammar" researchr: "https://researchr.org/publication/WykMBK02" cites: 0 citedby: 4 pages: "128-142" booktitle: "Compiler Construction, 11th International Conference, CC 2002, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2002, Grenoble, France, April 8-12, 2002, Proceedings" editor: - name: "R. Nigel Horspool" link: "https://researchr.org/alias/r.-nigel-horspool" volume: "2304" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-43369-4" kind: "inproceedings" key: "WykMBK02" - title: "Virtual Data Structures" author: - name: "S. Doaitse Swierstra" link: "http://www.cs.uu.nl/staff/doaitse.html" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1993" tags: - "data-flow" researchr: "https://researchr.org/publication/SwierstraM93" cites: 0 citedby: 0 pages: "355-371" booktitle: "Formal Program Development - IFIP TC2/WG 2.1 State-of-the-Art Report" editor: - name: "Bernhard Möller" link: "https://researchr.org/alias/bernhard-m%C3%B6ller" - name: "Helmuth Partsch" link: "https://researchr.org/alias/helmuth-partsch" - name: "Stephen A. Schuman" link: "https://researchr.org/alias/stephen-a.-schuman" volume: "755" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-57499-9" kind: "inproceedings" key: "SwierstraM93" - title: "Stepping Stones over the Refactoring Rubicon" author: - name: "Max Schäfer" link: "https://researchr.org/alias/max-sch%C3%A3%C2%A4fer" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Torbjörn Ekman" link: "https://researchr.org/alias/torbj%C3%A3%C2%B6rn-ekman" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-03013-0_17" links: doi: "http://dx.doi.org/10.1007/978-3-642-03013-0_17" tags: - "refactoring" researchr: "https://researchr.org/publication/SchaferVEM09" cites: 0 citedby: 0 pages: "369-393" booktitle: "ECOOP 2009 - Object-Oriented Programming, 23rd European Conference, Genoa, Italy, July 6-10, 2009. Proceedings" editor: - name: "Sophia Drossopoulou" link: "https://researchr.org/alias/sophia-drossopoulou" volume: "5653" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-03012-3" kind: "inproceedings" key: "SchaferVEM09" - title: "Sound and extensible renaming for java" author: - name: "Max Schäfer" link: "http://www.comlab.ox.ac.uk/people/Max.Schaefer/" - name: "Torbjörn Ekman" link: "http://progtools.comlab.ox.ac.uk/members/torbjorn" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2008" doi: "http://doi.acm.org/10.1145/1449764.1449787" abstract: "Descriptive names are crucial to understand code. However, good names are notoriously hard to choose and manually changing a globally visible name can be a maintenance nightmare. Hence, tool support for automated renaming is an essential aid for developers and widely supported by popular development environments. This work improves on two limitations in current refactoring tools: too weak preconditions that lead to unsoundness where names do not bind to the correct declarations after renaming, and too strong preconditions that prevent renaming of certain programs. We identify two main reasons for unsoundness: complex name lookup rules make it hard to define sufficient preconditions, and new language features require additional preconditions. We alleviate both problems by presenting a novel extensible technique for creating symbolic names that are guaranteed to bind to a desired entity in a particular context by inverting lookup functions. The inverted lookup functions can then be tailored to create qualified names where otherwise a conflict would occur, allowing the refactoring to proceed and improve on the problem with too strong preconditions. We have implemented renaming for Java as an extension to the JastAdd Extensible Java Compiler and integrated it in Eclipse. We show examples for which other refactoring engines have too weak preconditions, as well as examples where our approach succeeds in renaming entities by inserting qualifications. To validate the extensibility of the approach we have implemented renaming support for Java 5 and AspectJ like inter-type declarations as modular extensions to the initial Java 1.4 refactoring engine. The renaming engine is only a few thousand lines of code including extensions and performance is on par with industrial strength refactoring tools." links: doi: "http://doi.acm.org/10.1145/1449764.1449787" tags: - "programming languages" - "AspectJ" - "rule-based" - "Java" - "Eclipse" - "meta programming" - "type soundness" - "refactoring" - "maintenance" - "rules" - "rule-based refactoring" - "compiler" - "context-aware" - "Meta-Environment" - "JastAdd" - "extensible language" - "systematic-approach" researchr: "https://researchr.org/publication/SchaferEM08" cites: 33 citedby: 0 pages: "277-294" booktitle: "Proceedings of the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-23, 2008, Nashville, TN, USA" editor: - name: "Gail E. Harris" link: "https://researchr.org/alias/gail-e.-harris" publisher: "ACM" isbn: "978-1-60558-215-3" kind: "inproceedings" key: "SchaferEM08" - title: "Formalising and Verifying Reference Attribute Grammars in Coq" author: - name: "Max Schäfer" link: "http://www.comlab.ox.ac.uk/people/Max.Schaefer/" - name: "Torbjörn Ekman" link: "http://progtools.comlab.ox.ac.uk/members/torbjorn" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-00590-9_11" links: doi: "http://dx.doi.org/10.1007/978-3-642-00590-9_11" tags: - "attribute grammars" - "reference attribute grammars" - "grammar" researchr: "https://researchr.org/publication/SchaferEM09" cites: 0 citedby: 0 pages: "143-159" booktitle: "Programming Languages and Systems, 18th European Symposium on Programming, ESOP 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings" editor: - name: "Giuseppe Castagna" link: "https://researchr.org/alias/giuseppe-castagna" volume: "5502" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-00589-3" kind: "inproceedings" key: "SchaferEM09" - title: "Editorial" author: - name: "Olivier Danvy" link: "https://www.yale-nus.edu.sg/about/faculty/olivier-danvy/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Julian A. Padget" link: "https://researchr.org/alias/julian-a.-padget" - name: "Peter Thiemann" link: "http://www.informatik.uni-freiburg.de/~thiemann/" year: "2006" doi: "http://dx.doi.org/10.1007/s10990-006-8607-3" links: doi: "http://dx.doi.org/10.1007/s10990-006-8607-3" researchr: "https://researchr.org/publication/DanvyMPT06" cites: 0 citedby: 0 journal: "Higher-Order and Symbolic Computation" volume: "19" number: "1" pages: "5" kind: "article" key: "DanvyMPT06" - title: "From Dynamic Programming to Greedy Algorithms" author: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1993" tags: - "programming" researchr: "https://researchr.org/publication/BirdM93" cites: 0 citedby: 0 pages: "43-61" booktitle: "Formal Program Development - IFIP TC2/WG 2.1 State-of-the-Art Report" editor: - name: "Bernhard Möller" link: "https://researchr.org/alias/bernhard-m%C3%B6ller" - name: "Helmuth Partsch" link: "https://researchr.org/alias/helmuth-partsch" - name: "Stephen A. Schuman" link: "https://researchr.org/alias/stephen-a.-schuman" volume: "755" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-57499-9" kind: "inproceedings" key: "BirdM93" - title: "Adding magic to an optimising datalog compiler" author: - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2008" doi: "http://doi.acm.org/10.1145/1376616.1376673" abstract: "The magic-sets transformation is a useful technique for dramatically improving the performance of complex queries, but it has been observed that this transformation can also drastically reduce the performance of some queries. Successful implementations of magic in previous work require integration with the database optimiser to make appropriate decisions to guide the transformation (the sideways information passing strategy, or SIPS). This paper reports on the addition of the magic-sets transformation to a fully automatic optimising compiler from Datalog to SQL with no support from the database optimiser. We present an algorithm for making a good choice of SIPS using heuristics based on the sizes of relations. To achieve this, we define an abstract interpretation of Datalog programs to estimate the sizes of relations in the program. The effectiveness of our technique is evaluated over a substantial set of over a hundred queries, and in the context of the other optimisations performed by our compiler. It is shown that using the SIPS chosen by our algorithm, query performance is often significantly improved, as expected, but more importantly performance is never significantly degraded on queries that cannot benefit from magic." links: doi: "http://doi.acm.org/10.1145/1376616.1376673" tags: - "rule-based" - "SQL" - "compiler" - "database" - "context-aware" - "magic sets" - "Datalog" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/SereniAM08" cites: 0 citedby: 0 pages: "553-566" booktitle: "Proceedings of the ACM SIGMOD International Conference on Management of Data, SIGMOD 2008, Vancouver, BC, Canada, June 10-12, 2008" editor: - name: "Jason Tsong-Li Wang" link: "https://researchr.org/alias/jason-tsong-li-wang" publisher: "ACM" isbn: "978-1-60558-102-6" kind: "inproceedings" key: "SereniAM08" - title: "Type inference for datalog with complex type hierarchies" author: - name: "Max Schäfer" link: "https://researchr.org/alias/max-sch%C3%A3%C2%A4fer" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2010" doi: "http://doi.acm.org/10.1145/1706299.1706317" links: doi: "http://doi.acm.org/10.1145/1706299.1706317" tags: - "type inference" - "Datalog" researchr: "https://researchr.org/publication/SchaferM10" cites: 0 citedby: 0 pages: "145-156" booktitle: "Proceedings of the 37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2010, Madrid, Spain, January 17-23, 2010" editor: - name: "Manuel V. Hermenegildo" link: "https://researchr.org/alias/manuel-v.-hermenegildo" - name: "Jens Palsberg" link: "https://researchr.org/alias/jens-palsberg" publisher: "ACM" isbn: "978-1-60558-479-9" kind: "inproceedings" key: "SchaferM10" - title: "Incremental execution of transformation specifications" author: - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ken Friis Larsen" link: "https://researchr.org/alias/ken-friis-larsen" year: "2004" doi: "http://doi.acm.org/10.1145/964001.964004" links: doi: "http://doi.acm.org/10.1145/964001.964004" tags: - "incremental execution" - "incremental" - "transformation" researchr: "https://researchr.org/publication/SittampalamML04" cites: 0 citedby: 0 pages: "26-38" booktitle: "Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2004, Venice, Italy, January 14-16, 2004" editor: - name: "Neil D. Jones" link: "http://www.diku.dk/hjemmesider/ansatte/neil/" - name: "Xavier Leroy" link: "http://pauillac.inria.fr/~xleroy/" publisher: "ACM" isbn: "1-58113-729-X" kind: "inproceedings" key: "SittampalamML04" - title: "Efficient local type inference" author: - name: "Ben Bellamy" link: "https://researchr.org/alias/ben-bellamy" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" year: "2008" doi: "http://doi.acm.org/10.1145/1449764.1449802" abstract: "Inference of static types for local variables in Java bytecode is the first step of any serious tool that manipulates bytecode, be it for decompilation, transformation or analysis. It is important, therefore, to perform that step as accurately and efficiently as possible. Previous work has sought to give solutions with good worst-case complexity. We present a novel algorithm, which is optimised for the common case rather than worst-case performance. It works by first finding a set of minimal typings that are valid for all assignments, and then checking whether these minimal typings satisfy all uses. Unlike previous algorithms, it does not explicitly build a data structure of type constraints, and it is easy to implement efficiently. We prove that the algorithm produces a typing that is both sound (obeying the rules of the language) and as tight as possible. We then go on to present extensive experiments, comparing the results of the new algorithm against the previously best known method. The experiments include bytecode that is generated in other ways than compilation of Java source. The new algorithm is always faster, typically by a factor 6, but on some real benchmarks the gain is as high as a factor of 92. Furthermore, whereas that previous method is sometimes suboptimal, our algorithm always returns a tightest possible type. We also discuss in detail how we handle primitive types, which is a difficult issue due to the discrepancy in their treatment between Java bytecode and Java source. For the application to decompilation, however, it is very important to handle this correctly." links: doi: "http://doi.acm.org/10.1145/1449764.1449802" tags: - "model-to-model transformation" - "type inference" - "rule-based" - "Java" - "data-flow language" - "model checking" - "type soundness" - "transformation language" - "points-to analysis" - "analysis" - "static analysis" - "constraints" - "data-flow" - "source-to-source" - "rules" - "type checking" - "model transformation" - "decompilation" - "data-flow analysis" - "local type inference" - "open-source" - "transformation" researchr: "https://researchr.org/publication/BellamyAMS08" cites: 0 citedby: 0 pages: "475-492" booktitle: "Proceedings of the 23rd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2008, October 19-23, 2008, Nashville, TN, USA" editor: - name: "Gail E. Harris" link: "https://researchr.org/alias/gail-e.-harris" publisher: "ACM" isbn: "978-1-60558-215-3" kind: "inproceedings" key: "BellamyAMS08" - title: "Imperative Program Transformation by Rewriting" author: - name: "David Lacey" link: "https://researchr.org/alias/david-lacey" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2001" doi: "http://link.springer.de/link/service/series/0558/bibs/2027/20270052.htm" abstract: "We present a method of specifying standard imperative pro- gram optimisations as a rewrite system. To achieve this we have extended the idea of matching sub-terms in expressions with simple patterns to matching blocks in a control flow graph. In order to express the complex restrictions on the applicability of these rewrites we add temporal logic side conditions. The combination of these features allows a flexible, high level, yet executable specification of many of the transformations found in optimising compilers." links: doi: "http://link.springer.de/link/service/series/0558/bibs/2027/20270052.htm" tags: - "control systems" - "graph transformation" - "data-flow programming" - "data-flow" - "graph-rewriting" - "pattern matching" - "logic programming" - "transformation system" - "compiler" - "logic" - "higher-order transformations" - "rewriting logic" - "rewriting" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/LaceyM01" cites: 0 citedby: 0 pages: "52-68" booktitle: "Compiler Construction, 10th International Conference, CC 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001 Genova, Italy, April 2-6, 2001, Proceedings" editor: - name: "Reinhard Wilhelm" link: "https://researchr.org/alias/reinhard-wilhelm" volume: "2027" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-41861-X" kind: "inproceedings" key: "LaceyM01" - title: "Transforming the .NET intermediate language using path logic programming" author: - name: "Stephen Drape" link: "https://researchr.org/alias/stephen-drape" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "2002" doi: "http://doi.acm.org/10.1145/571157.571171" links: doi: "http://doi.acm.org/10.1145/571157.571171" tags: - "programming languages" - "logic programming" - "programming" - "logic" researchr: "https://researchr.org/publication/DrapeMS02" cites: 1 citedby: 0 pages: "133-144" booktitle: "Proceedings of the 4th international ACM SIGPLAN conference on Principles and practice of declarative programming, October 6-8, 2002, Pittsburgh, PA, USA (Affiliated with PLI 2002)" publisher: "ACM" kind: "inproceedings" key: "DrapeMS02" - title: "Keynote Address: .QL for Source Code Analysis" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Pavel Avgustinov" link: "https://researchr.org/alias/pavel-avgustinov" - name: "Torbjorn Ekman" link: "https://researchr.org/alias/torbjorn-ekman" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "https://researchr.org/alias/damien-sereni" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2007" doi: "http://doi.ieeecomputersociety.org/10.1109/SCAM.2007.31" links: doi: "http://doi.ieeecomputersociety.org/10.1109/SCAM.2007.31" tags: - "points-to analysis" - "analysis" - "source-to-source" - "peer-to-peer" - "open-source" researchr: "https://researchr.org/publication/10.1109-SCAM.2007.31" cites: 0 citedby: 0 journal: "Source Code Analysis and Manipulation, IEEE International Workshop on" volume: "0" kind: "article" key: "10.1109-SCAM.2007.31" - title: "Datalog as a pointcut language in aspect-oriented programming" author: - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176664" links: doi: "http://doi.acm.org/10.1145/1176617.1176664" tags: - "programming languages" - "object-oriented programming" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "Datalog" - "feature-oriented programming" researchr: "https://researchr.org/publication/HajiyevOAMSTV06" cites: 0 citedby: 0 pages: "667-668" booktitle: "Companion to the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, October 22-26, 2006, Portland, Oregon, USA" editor: - name: "Peri L. Tarr" link: "https://researchr.org/alias/peri-l.-tarr" - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" publisher: "ACM" isbn: "1-59593-491-X" kind: "inproceedings" key: "HajiyevOAMSTV06" - title: "Static analysis of aspects" author: - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2003" doi: "http://doi.acm.org/10.1145/643603.643607" links: doi: "http://doi.acm.org/10.1145/643603.643607" tags: - "analysis" - "static analysis" researchr: "https://researchr.org/publication/SereniM03" cites: 0 citedby: 0 pages: "30-39" booktitle: "AOSD" kind: "inproceedings" key: "SereniM03" - title: "Semantics of static pointcuts in aspectJ" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2007" doi: "http://doi.acm.org/10.1145/1190216.1190221" abstract: "In aspect-oriented programming, one can intercept events by writing patterns called pointcuts. The pointcut language of the most popular aspect-oriented programming language, AspectJ, allows the expression of highly complex properties of the static program structure.We present the first rigorous semantics of the AspectJ pointcut language, by translating static patterns into safe ( i.e. range-restricted and stratified) Datalog queries. Safe Datalog is a logic language like Prolog, but it does not have data structures; consequently it has a straightforward least fixpoint semantics and all queries terminate.The translation from pointcuts to safe Datalog consists of a set of simple conditional rewrite rules, implemented using the Stratego system. The resulting queries are themselves executable with the CodeQuest system. We present experiments indicating that direct execution of our semantics is not prohibitively expensive." links: doi: "http://doi.acm.org/10.1145/1190216.1190221" tags: - "programming languages" - "AspectJ" - "object-oriented programming" - "semantics" - "Prolog" - "rule-based" - "translation" - "data-flow language" - "pattern language" - "graph query" - "data-flow programming" - "data-flow" - "graph-rewriting" - "rules" - "writing" - "logic programming" - "aspect oriented programming" - "programming" - "subject-oriented programming" - "logic" - "rewriting logic" - "rewriting" - "Datalog" - "feature-oriented programming" - "Stratego" - "query language" researchr: "https://researchr.org/publication/AvgustinovHOMSTV07" cites: 1 citedby: 0 pages: "11-23" booktitle: "Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2007, Nice, France, January 17-19, 2007" editor: - name: "Martin Hofmann" link: "https://researchr.org/alias/martin-hofmann" - name: "Matthias Felleisen" link: "http://www.ccs.neu.edu/home/matthias/" publisher: "ACM" isbn: "1-59593-575-4" kind: "inproceedings" key: "AvgustinovHOMSTV07" - title: "Categories, Relations and Dynamic Programming" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1994" tags: - "programming" researchr: "https://researchr.org/publication/Moor94" cites: 0 citedby: 0 journal: "Mathematical Structures in Computer Science" volume: "4" number: "1" pages: "33-69" kind: "article" key: "Moor94" - title: "Aspects for Trace Monitoring" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Eric Bodden" link: "http://www.bodden.de/" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2006" doi: "http://dx.doi.org/10.1007/11940197_2" links: doi: "http://dx.doi.org/10.1007/11940197_2" researchr: "https://researchr.org/publication/AvgustinovBHHLMOSSTV06" cites: 0 citedby: 0 pages: "20-39" booktitle: "Formal Approaches to Software Testing and Runtime Verification, First Combined International Workshops, FATES 2006 and RV 2006, Seattle, WA, USA, August 15-16, 2006, Revised Selected Papers" editor: - name: "Klaus Havelund" link: "https://researchr.org/alias/klaus-havelund" - name: "Manuel Núñez" link: "https://researchr.org/alias/manuel-n%C3%BA%C3%B1ez" - name: "Grigore Rosu" link: "http://fsl.cs.uiuc.edu/~grosu/" - name: "Burkhart Wolff" link: "https://researchr.org/alias/burkhart-wolff" volume: "4262" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-49699-8" kind: "inproceedings" key: "AvgustinovBHHLMOSSTV06" - title: "Higher Order Matching for Program Transformation" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "1999" tags: - "higher-order transformations" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/MoorS99" cites: 0 citedby: 0 pages: "209-224" booktitle: "Functional and Logic Programming, 4th Fuji International Symposium, FLOPS 99, Tsukuba, Japan, November 11-13, 1999, Proceedings" editor: - name: "Aart Middeldorp" link: "https://researchr.org/alias/aart-middeldorp" - name: "Taisuke Sato" link: "https://researchr.org/alias/taisuke-sato" volume: "1722" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-66677-X" kind: "inproceedings" key: "MoorS99" - title: "abc: an extensible AspectJ compiler" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://doi.acm.org/10.1145/1052898.1052906" links: doi: "http://doi.acm.org/10.1145/1052898.1052906" successor: "https://researchr.org/publication/AvgustinovCHKLLMSST06" tags: - "AspectJ" - "compiler" researchr: "https://researchr.org/publication/AvgustinovCHKLLMSST05" cites: 0 citedby: 0 pages: "87-98" booktitle: "Proceedings of the 4th International Conference on Aspect-Oriented Software Development, AOSD 2005, Chicago, Illinois, USA, March 14-18, 2005" editor: - name: "Mira Mezini" link: "https://researchr.org/alias/mira-mezini" - name: "Peri L. Tarr" link: "https://researchr.org/alias/peri-l.-tarr" publisher: "ACM" isbn: "1-59593-042-6" kind: "inproceedings" key: "AvgustinovCHKLLMSST05" - title: "On the Semantics of Matching Trace Monitoring Patterns" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-77395-5_2" links: doi: "http://dx.doi.org/10.1007/978-3-540-77395-5_2" tags: - "semantics" - "pattern matching" researchr: "https://researchr.org/publication/AvgustinovTM07%3A0" cites: 0 citedby: 0 pages: "9-21" booktitle: "Runtime Verification, 7th International Workshop, RV 2007, Vancover, Canada, March 13, 2007, Revised Selected Papers" editor: - name: "Oleg Sokolsky" link: "https://researchr.org/alias/oleg-sokolsky" - name: "Serdar Tasiran" link: "https://researchr.org/alias/serdar-tasiran" volume: "4839" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-77394-8" kind: "inproceedings" key: "AvgustinovTM07:0" - title: "CodeQuest: querying source code with datalog" author: - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Kris De Volder" link: "https://researchr.org/alias/kris-de-volder" year: "2005" doi: "http://doi.acm.org/10.1145/1094855.1094884" links: doi: "http://doi.acm.org/10.1145/1094855.1094884" tags: - "source-to-source" - "Datalog" - "open-source" researchr: "https://researchr.org/publication/HajiyevVMV05" cites: 0 citedby: 0 pages: "102-103" booktitle: "Companion to the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, October 16-20, 2005, San Diego, CA, USA" editor: - name: "Ralph E. Johnson" link: "http://st-www.cs.illinois.edu/users/johnson/" - name: "Richard P. Gabriel" link: "https://researchr.org/alias/richard-p.-gabriel" publisher: "ACM" isbn: "1-59593-193-7" kind: "inproceedings" key: "HajiyevVMV05" - title: ".QL: Object-Oriented Queries Made Easy" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Torbjörn Ekman" link: "http://progtools.comlab.ox.ac.uk/members/torbjorn" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-88643-3_3" 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 compute metrics and to enforce coding conventions. The class mechanism of .QL is discussed in depth, and we demonstrate how it can be used to build libraries of reusable queries. " links: doi: "http://dx.doi.org/10.1007/978-3-540-88643-3_3" tags: - "data-flow language" - "reuse" - "data-flow" - "Meta-Environment" - "meta-objects" - "query language" researchr: "https://researchr.org/publication/MoorSVHAEOT07" cites: 1 citedby: 0 pages: "78-133" booktitle: "Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007" editor: - name: "Ralf Lämmel" link: "http://www.uni-koblenz.de/~laemmel/Site/Home.html" - name: "Joost Visser" link: "http://www.di.uminho.pt/~joost.visser/" - name: "João Saraiva" link: "http://di.uminho.pt/~jas" volume: "5235" series: "Lecture Notes in Computer Science" address: "Braga, Portugal" publisher: "Springer" isbn: "978-3-540-88642-6" kind: "inproceedings" key: "MoorSVHAEOT07" - title: "Inductive Data Types for Predicate Transformers" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1992" tags: - "data-flow" researchr: "https://researchr.org/publication/Moor92" cites: 0 citedby: 0 journal: "Inf. Process. Lett." volume: "43" number: "3" pages: "113-117" kind: "article" key: "Moor92" - title: "Adding open modules to AspectJ" author: - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "2006" doi: "http://doi.acm.org/10.1145/1119655.1119664" links: doi: "http://doi.acm.org/10.1145/1119655.1119664" tags: - "AspectJ" - "source-to-source" - "open-source" researchr: "https://researchr.org/publication/OngkingcoATHMS06" cites: 0 citedby: 1 pages: "39-50" booktitle: "Proceedings of the 5th International Conference on Aspect-Oriented Software Development, AOSD 2006, Bonn, Germany, March 20-24, 2006" editor: - name: "Robert E. Filman" link: "https://researchr.org/alias/robert-e.-filman" publisher: "ACM" isbn: "1-59593-300-X" kind: "inproceedings" key: "OngkingcoATHMS06" - title: "Challenge proposal: verification of refactorings" author: - name: "Max Schäfer" link: "https://researchr.org/alias/max-sch%C3%A4fer" - name: "Torbjörn Ekman" link: "https://researchr.org/alias/torbj%C3%B6rn-ekman" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2009" doi: "http://doi.acm.org/10.1145/1481848.1481859" abstract: "Automated refactoring tools are an essential part of a software developer's toolbox. They are most useful for gradually improving large existing code bases and it is essential that they work reliably, since even a simple refactoring may affect many different parts of a program, and the programmer should not have to inspect every individual change to ensure that the transformation went as expected. Even extensively tested industrial-strength refactoring engines, however, are fraught with many bugs that lead to incorrect, non-behaviour preserving transformations. We argue that software refactoring tools are a prime candidate for mechanical verification, offering significant challenges but also the prospect of tangible benefits for real-world software development. " links: doi: "http://doi.acm.org/10.1145/1481848.1481859" tags: - "program verification" - "refactoring" - "testing" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/SchaferEM-PLPV-2009" cites: 26 citedby: 0 pages: "67-72" booktitle: "Proceedings of the 3rd ACM Workshop Programming Languages meets Program Verification, PLPV 2009, Savannah, GA, USA, January 20, 2009" editor: - name: "Thorsten Altenkirch" link: "http://www.cs.nott.ac.uk/~txa" - name: "Todd D. Millstein" link: "https://researchr.org/alias/todd-d.-millstein" publisher: "ACM" isbn: "978-1-60558-330-3" kind: "inproceedings" key: "SchaferEM-PLPV-2009" - title: "An Algebraic Construction of Predicate Transformers" author: - name: "Paul H. B. Gardiner" link: "https://researchr.org/alias/paul-h.-b.-gardiner" - name: "Clare E. Martin" link: "https://researchr.org/alias/clare-e.-martin" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1992" tags: - "e-science" - " algebra" researchr: "https://researchr.org/publication/GardinerMM92" cites: 0 citedby: 0 pages: "100-121" booktitle: "Mathematics of Program Construction, Second International Conference, Oxford, U.K., June 29 - July 3, 1992, Proceedings" editor: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Carroll Morgan" link: "https://researchr.org/alias/carroll-morgan" - name: "Jim Woodcock" link: "https://researchr.org/alias/jim-woodcock" volume: "669" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-56625-2" kind: "inproceedings" key: "GardinerMM92" - title: "Measuring the dynamic behaviour of AspectJ programs" author: - name: "Bruno Dufour" link: "https://researchr.org/alias/bruno-dufour" - name: "Christopher Goard" link: "https://researchr.org/alias/christopher-goard" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Clark Verbrugge" link: "https://researchr.org/alias/clark-verbrugge" year: "2004" doi: "http://doi.acm.org/10.1145/1028976.1028990" links: doi: "http://doi.acm.org/10.1145/1028976.1028990" tags: - "AspectJ" researchr: "https://researchr.org/publication/DufourGHMSV04" cites: 0 citedby: 0 pages: "150-169" booktitle: "Proceedings of the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2004" editor: - name: "John M. Vlissides" link: "https://researchr.org/alias/john-m.-vlissides" - name: "Douglas C. Schmidt" link: "https://researchr.org/alias/douglas-c.-schmidt" address: "Vancouver, BC, Canada" publisher: "ACM" isbn: "1-58113-831-8" kind: "inproceedings" key: "DufourGHMSV04" - title: "Compiling embedded languages" author: - name: "Conal Elliott" link: "http://conal.net/" - name: "Sigbjorn Finne" link: "https://researchr.org/alias/sigbjorn-finne" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2003" doi: "http://dx.doi.org/10.1017/S0956796802004574" abstract: "Functional languages are particularly well-suited to the interpretive implementations of Domain-Specific Embedded Languages (DSELs). We describe an implemented technique for producing optimizing compilers for DSELs, based on Kamin's idea of DSELs for program generation. The technique uses a data type of syntax for basic types, a set of smart constructors that perform rewriting over those types, some code motion transformations, and a back-end code generator. Domain-specific optimization results from chains of domain-independent rewrites on basic types. New DSELs are defined directly in terms of the basic syntactic types, plus host language functions and tuples. This definition style makes compilers easy to write and, in fact, almost identical to the simplest embedded interpreters. We illustrate this technique with a language Pan for the computationally intensive domain of image synthesis and manipulation." links: doi: "http://dx.doi.org/10.1017/S0956796802004574" tags: - "embedded languages" - "programming languages" - "optimization" - "rule-based" - "syntax definition" - "data-flow language" - "graph transformation" - "interpreter" - "transformation language" - "functional programming" - "data-flow programming" - "data-flow" - "graph-rewriting" - "code generation" - "compiler" - "DSL" - "program optimization" - "internal languages" - "rewriting" - "transformation" - "program transformation" - "domain-specific language" researchr: "https://researchr.org/publication/ElliottFM03" cites: 17 citedby: 0 journal: "Journal of Functional Programming" volume: "13" number: "3" pages: "455-481" kind: "article" key: "ElliottFM03" - title: "abc: The AspectBench Compiler for AspectJ" author: - name: "Chris Allan" link: "https://researchr.org/alias/chris-allan" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://dx.doi.org/10.1007/11561347_2" links: doi: "http://dx.doi.org/10.1007/11561347_2" tags: - "AspectJ" - "compiler" researchr: "https://researchr.org/publication/AllanACHKLLMSST05" cites: 0 citedby: 0 pages: "10-16" booktitle: "Generative Programming and Component Engineering, 4th International Conference, GPCE 2005" editor: - name: "Robert Glück" link: "http://www.diku.dk/hjemmesider/ansatte/glueck/" - name: "Michael R. Lowry" link: "https://researchr.org/alias/michael-r.-lowry" volume: "3676" series: "Lecture Notes in Computer Science" address: "Tallinn, Estonia" publisher: "Springer" isbn: "3-540-29138-5" kind: "inproceedings" key: "AllanACHKLLMSST05" - title: "Aspect-Oriented Compilers" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Simon L. Peyton Jones" link: "http://research.microsoft.com/en-us/people/simonpj/" - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" year: "1999" doi: "http://link.springer.de/link/service/series/0558/bibs/1799/17990121.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1799/17990121.htm" tags: - "compiler" researchr: "https://researchr.org/publication/MoorPW99" cites: 0 citedby: 0 pages: "121-133" booktitle: "Generative and Component-Based Software Engineering, First International Symposium, GCSE 99, Erfurt, Germany, September 28-30, 1999, Revised Papers" editor: - name: "Krzysztof Czarnecki" link: "http://www.swen.uwaterloo.ca/~kczarnec/" - name: "Ulrich W. Eisenecker" link: "https://researchr.org/alias/ulrich-w.-eisenecker" volume: "1799" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-41172-0" kind: "inproceedings" key: "MoorPW99" - title: "The algebra of programming" author: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1996" tags: - " algebra" - "programming" researchr: "https://researchr.org/publication/BirdM96" cites: 0 citedby: 0 pages: "167-203" booktitle: "Proceedings of the NATO Advanced Study Institute on Deductive Program Design, Marktoberdorf, Germany" editor: - name: "Manfred Broy" link: "https://researchr.org/alias/manfred-broy" isbn: "3-540-60947-4" kind: "inproceedings" key: "BirdM96" - title: "Object-oriented queries over software systems: (abstract of invited talk)" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2007" doi: "http://doi.acm.org/10.1145/1244381.1244396" links: doi: "http://doi.acm.org/10.1145/1244381.1244396" researchr: "https://researchr.org/publication/MoorHV07" cites: 0 citedby: 0 pages: "91" booktitle: "Proceedings of the 2007 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, 2007, Nice, France, January 15-16, 2007" editor: - name: "Ganesan Ramalingam" link: "http://research.microsoft.com/en-us/um/people/grama/" - name: "Eelco Visser" link: "http://eelcovisser.org" publisher: "ACM" isbn: "978-1-59593-620-2" kind: "inproceedings" key: "MoorHV07" - title: "Higher-Order Pattern Matching for Automatically Applying Fusion Transformations" author: - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2001" doi: "http://link.springer.de/link/service/series/0558/bibs/2053/20530218.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/2053/20530218.htm" tags: - "pattern matching" - "higher-order transformations" - "transformation" researchr: "https://researchr.org/publication/SittampalamM01" cites: 0 citedby: 0 pages: "218-237" booktitle: "Programs as Data Objects, Second Symposium, PADO 2001, Aarhus, Denmark, May 21-23, 2001, Proceedings" editor: - name: "Olivier Danvy" link: "https://www.yale-nus.edu.sg/about/faculty/olivier-danvy/" - name: "Andrzej Filinski" link: "https://researchr.org/alias/andrzej-filinski" volume: "2053" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-42068-1" kind: "inproceedings" key: "SittampalamM01" - title: "Optimising aspectJ" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2005" doi: "http://doi.acm.org/10.1145/1065010.1065026" links: doi: "http://doi.acm.org/10.1145/1065010.1065026" tags: - "AspectJ" researchr: "https://researchr.org/publication/AvgustinovCHKLLMSST05%3A0" cites: 0 citedby: 0 pages: "117-128" booktitle: "Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation, Chicago, IL, USA, June 12-15, 2005" editor: - name: "Vivek Sarkar" link: "https://researchr.org/alias/vivek-sarkar" - name: "Mary W. Hall" link: "https://researchr.org/alias/mary-w.-hall" publisher: "ACM" isbn: "1-59593-056-6" kind: "inproceedings" key: "AvgustinovCHKLLMSST05:0" - title: "Making trace monitors feasible" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://doi.acm.org/10.1145/1297027.1297070" links: doi: "http://doi.acm.org/10.1145/1297027.1297070" researchr: "https://researchr.org/publication/AvgustinovTM07" cites: 0 citedby: 0 pages: "589-608" booktitle: "Proceedings of the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2007, October 21-25, 2007, Montreal, Quebec, Canada" editor: - name: "Richard P. Gabriel" link: "http://www.dreamsongs.com/RPG.html" - name: "David F. Bacon" link: "http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.index.html" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Guy L. Steele Jr." link: "http://research.sun.com/people/mybio.php?uid=25706" publisher: "ACM" isbn: "978-1-59593-786-5" kind: "inproceedings" key: "AvgustinovTM07" - title: "Efficient trace monitoring" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Eric Bodden" link: "http://www.bodden.de/" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176673" links: doi: "http://doi.acm.org/10.1145/1176617.1176673" researchr: "https://researchr.org/publication/AvgustinovTBHLMOS06" cites: 0 citedby: 0 pages: "685-686" booktitle: "Companion to the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, October 22-26, 2006, Portland, Oregon, USA" editor: - name: "Peri L. Tarr" link: "https://researchr.org/alias/peri-l.-tarr" - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" publisher: "ACM" isbn: "1-59593-491-X" kind: "inproceedings" key: "AvgustinovTBHLMOS06" - title: "Scripting refactorings with JunGL" author: - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Arnaud Payement" link: "https://researchr.org/alias/arnaud-payement" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2006" doi: "http://doi.acm.org/10.1145/1176617.1176656" links: doi: "http://doi.acm.org/10.1145/1176617.1176656" tags: - "refactoring" researchr: "https://researchr.org/publication/VerbaerePM06" cites: 0 citedby: 0 pages: "651-652" booktitle: "Companion to the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2006, October 22-26, 2006, Portland, Oregon, USA" editor: - name: "Peri L. Tarr" link: "https://researchr.org/alias/peri-l.-tarr" - name: "William R. Cook" link: "http://www.cs.utexas.edu/~wcook/" publisher: "ACM" isbn: "1-59593-491-X" kind: "inproceedings" key: "VerbaerePM06" - title: "JunGL: a scripting language for refactoring" author: - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Ran Ettinger" link: "https://researchr.org/alias/ran-ettinger" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2006" doi: "http://doi.acm.org/10.1145/1134311" links: doi: "http://doi.acm.org/10.1145/1134311" tags: - "refactoring" researchr: "https://researchr.org/publication/VerbaereEM06" cites: 0 citedby: 0 pages: "172-181" booktitle: "28th International Conference on Software Engineering (ICSE 2006), Shanghai, China, May 20-28, 2006" editor: - name: "Leon J. Osterweil" link: "https://researchr.org/alias/leon-j.-osterweil" - name: "H. Dieter Rombach" link: "https://researchr.org/alias/h.-dieter-rombach" - name: "Mary Lou Soffa" link: "https://researchr.org/alias/mary-lou-soffa" publisher: "ACM" isbn: "1-59593-375-1" kind: "inproceedings" key: "VerbaereEM06" - title: "List Partitions" author: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1993" tags: - "partitioning" researchr: "https://researchr.org/publication/BirdM93%3A0" cites: 0 citedby: 0 journal: "Formal Asp. Comput." volume: "5" number: "1" pages: "61-78" kind: "article" key: "BirdM93:0" - title: "An Algebraic Construction of Predicate Transformers" author: - name: "Paul H. B. Gardiner" link: "https://researchr.org/alias/paul-h.-b.-gardiner" - name: "Clare E. Martin" link: "https://researchr.org/alias/clare-e.-martin" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1994" tags: - "e-science" - " algebra" researchr: "https://researchr.org/publication/GardinerMM94" cites: 0 citedby: 0 journal: "Science of Computer Programming" volume: "22" number: "1-2" pages: "21-44" kind: "article" key: "GardinerMM94" - title: "Bridging the Algorithm Gap: A Linear-Time Functional Program for Paragraph Formatting" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Jeremy Gibbons" link: "http://www.comlab.ox.ac.uk/jeremy.gibbons/" year: "1999" tags: - "functional programming" researchr: "https://researchr.org/publication/MoorG99" cites: 0 citedby: 0 journal: "Science of Computer Programming" volume: "35" number: "1" pages: "3-27" kind: "article" key: "MoorG99" - title: "Solving Optimisation Problems with Catamorphism" author: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "1992" researchr: "https://researchr.org/publication/BirdM92" cites: 0 citedby: 0 pages: "45-66" booktitle: "Mathematics of Program Construction, Second International Conference, Oxford, U.K., June 29 - July 3, 1992, Proceedings" editor: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Carroll Morgan" link: "https://researchr.org/alias/carroll-morgan" - name: "Jim Woodcock" link: "https://researchr.org/alias/jim-woodcock" volume: "669" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-56625-2" kind: "inproceedings" key: "BirdM92" - title: "Keynote Address: .QL for Source Code Analysis" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Torbjörn Ekman" link: "http://progtools.comlab.ox.ac.uk/members/torbjorn" - name: "Neil Ongkingco" link: "https://researchr.org/alias/neil-ongkingco" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2007" doi: "http://dx.doi.org/10.1109/SCAM.2007.31" abstract: "Many tasks in source code analysis can be viewed as evaluating queries over a relational representation of the code. Here we present an object-oriented query language, named .QL, and demonstrate its use for general navigation, bug finding and enforcing coding conventions. We then focus on the particular problem of specifying metrics as queries." links: doi: "http://dx.doi.org/10.1109/SCAM.2007.31" tags: - "points-to analysis" - "analysis" - "source-to-source" - "Meta-Environment" - "open-source" - "meta-objects" - "query language" researchr: "https://researchr.org/publication/MoorVHAEOST07" cites: 0 citedby: 0 pages: "3-16" booktitle: "Seventh IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2007), September 30 - October 1, 2007, Paris, France" publisher: "IEEE" kind: "inproceedings" key: "MoorVHAEOST07" - title: "Type inference for datalog and its application to query optimisation" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" year: "2008" doi: "http://doi.acm.org/10.1145/1376916.1376957" abstract: "Certain variants of object-oriented Datalog can be compiled to Datalog with negation. We seek to apply optimisations akin to virtual method resolution (a well-known technique in compiling Java and other OO languages) to improve efficiency of the resulting Datalog programs. The effectiveness of such optimisations strongly depends on the precision of the underlying type inference algorithm. Previous work on type inference for Datalog has focussed on Cartesian abstractions, where the type of each field is computed separately. Such Cartesian type inference is inherently imprecise in the presence of field equalities. We propose a type system where equalities are tracked, and present a type inference algorithm. The algorithm is proved sound. We also prove that it is optimal for Datalog without negation, in the sense that the inferred type is as tight as possible. Extensive experiments with our type-based optimisations, in a commercial implementation of object-oriented Datalog, confirm the benefits of this non-Cartesian type inference algorithm." links: doi: "http://doi.acm.org/10.1145/1376916.1376957" tags: - "programming languages" - "object-oriented programming" - "type inference" - "rule-based" - "Java" - "meta programming" - "type soundness" - "type system" - "compiler" - "subject-oriented programming" - "abstraction" - "Meta-Environment" - "Datalog" - "feature-oriented programming" - "meta-objects" - "query language" researchr: "https://researchr.org/publication/MoorSAV08" cites: 0 citedby: 0 pages: "291-300" booktitle: "Proceedings of the Twenty-Seventh ACM SIGMOD-SIGACT-SIGART Symposium on Principles of Database Systems, PODS 2008, June 9-11, 2008, Vancouver, BC, Canada" editor: - name: "Maurizio Lenzerini" link: "https://researchr.org/alias/maurizio-lenzerini" - name: "Domenico Lembo" link: "https://researchr.org/alias/domenico-lembo" publisher: "ACM" isbn: "978-1-60558-108-8" kind: "inproceedings" key: "MoorSAV08" - title: "Container types categorically" author: - name: "Paul F. Hoogendijk" link: "https://researchr.org/alias/paul-f.-hoogendijk" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2000" researchr: "https://researchr.org/publication/HoogendijkM00" cites: 0 citedby: 0 journal: "Journal of Functional Programming" volume: "10" number: "2" pages: "191-225" kind: "article" key: "HoogendijkM00" - title: "Universal Regular Path Queries" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "David Lacey" link: "https://researchr.org/alias/david-lacey" - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" year: "2003" doi: "http://dx.doi.org/10.1023/A:1023063919574" links: doi: "http://dx.doi.org/10.1023/A:1023063919574" researchr: "https://researchr.org/publication/MoorLW03" cites: 0 citedby: 0 journal: "Higher-Order and Symbolic Computation" volume: "16" number: "1-2" pages: "15-35" kind: "article" key: "MoorLW03" - title: "abc: An Extensible AspectJ Compiler" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" year: "2006" doi: "http://dx.doi.org/10.1007/11687061_9" abstract: " 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 features for AspectJ have been proposed that require extensions in many dimensions: syntax, type checking and code generation, as well as data flow and control flow analyses. The AspectBench Compiler (abc) is an implementation of such a workbench. The base version of abc implements the full AspectJ language. Its front end is built using the Polyglot framework, as a modular extension of the Java language. The use of Polyglot gives flexibility of syntax and type checking. The back end is built using the Soot framework, to give modular code generation and analyses. In this paper, we outline the design of abc, focusing mostly on how the design supports extensibility. We then provide a general overview of how to use abc to implement an extension. We illustrate the extension mechanisms of abc through a number of small, but nontrivial, examples. We then proceed to contrast the design goals of abc with those of the original AspectJ compiler, and how these different goals have led to different design decisions. Finally, we review a few examples of projects by others that extend abc in interesting ways. " links: doi: "http://dx.doi.org/10.1007/11687061_9" tags: - "programming languages" - "workbench" - "AspectJ" - "object-oriented programming" - "rule-based" - "Java" - "data-flow language" - "design research" - "language design" - "data-flow programming" - "data-flow" - "code generation" - "type checking" - "reviewing" - "aspect oriented programming" - "compiler" - "programming" - "subject-oriented programming" - "language workbench" - "design" - "extensible language" - "feature-oriented programming" researchr: "https://researchr.org/publication/AvgustinovCHKLLMSST06" cites: 0 citedby: 1 journal: "Transactions on Aspect-Oriented Software Development" pages: "293-334" kind: "article" key: "AvgustinovCHKLLMSST06" - title: "abc the aspectBench compiler for aspectJ a workbench for aspect-oriented programming language and compilers research" author: - name: "Chris Allan" link: "https://researchr.org/alias/chris-allan" - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Aske Simon Christensen" link: "https://researchr.org/alias/aske-simon-christensen" - name: "Bruno Dufour" link: "https://researchr.org/alias/bruno-dufour" - name: "Christopher Goard" link: "https://researchr.org/alias/christopher-goard" - name: "Laurie J. Hendren" link: "http://www.sable.mcgill.ca/~hendren/" - name: "Sascha Kuzins" link: "https://researchr.org/alias/sascha-kuzins" - name: "Jennifer Lhoták" link: "https://researchr.org/alias/jennifer-lhot%C3%A1k" - name: "Ondřej Lhoták" link: "http://plg.uwaterloo.ca/~olhotak" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Damien Sereni" link: "http://metacomp.comlab.ox.ac.uk/Members/damien" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Clark Verbrugge" link: "https://researchr.org/alias/clark-verbrugge" year: "2005" doi: "http://doi.acm.org/10.1145/1094855.1094877" links: doi: "http://doi.acm.org/10.1145/1094855.1094877" tags: - "programming languages" - "workbench" - "AspectJ" - "object-oriented programming" - "aspect oriented programming" - "compiler" - "programming" - "subject-oriented programming" - "language workbench" - "feature-oriented programming" researchr: "https://researchr.org/publication/AllanACDGHKLLMSSTV05" cites: 0 citedby: 0 pages: "88-89" booktitle: "Companion to the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, October 16-20, 2005, San Diego, CA, USA" editor: - name: "Ralph E. Johnson" link: "http://st-www.cs.illinois.edu/users/johnson/" - name: "Richard P. Gabriel" link: "https://researchr.org/alias/richard-p.-gabriel" publisher: "ACM" isbn: "1-59593-193-7" kind: "inproceedings" key: "AllanACDGHKLLMSSTV05" - title: "Refactoring Tools" author: - name: "Danny Dig" link: "https://researchr.org/alias/danny-dig" - name: "Ralph E. Johnson" link: "http://st-www.cs.illinois.edu/users/johnson/" - name: "Frank Tip" link: "http://domino.research.ibm.com/comm/research_people.nsf/pages/tip.index.html" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Jan Becicka" link: "https://researchr.org/alias/jan-becicka" - name: "William G. Griswold" link: "https://researchr.org/alias/william-g.-griswold" - name: "Markus Keller" link: "https://researchr.org/alias/markus-keller" year: "2007" doi: "http://dx.doi.org/10.1007/978-3-540-78195-0_19" links: doi: "http://dx.doi.org/10.1007/978-3-540-78195-0_19" tags: - "refactoring" researchr: "https://researchr.org/publication/DigJTMBGK07" cites: 0 citedby: 0 pages: "193-202" booktitle: "Object-Oriented Technology. ECOOP 2007 Workshop Reader, Berlin, Germany, July 30-31, 2007, Final Reports" editor: - name: "Michael Cebulla" link: "https://researchr.org/alias/michael-cebulla" volume: "4906" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-540-78194-3" kind: "inproceedings" key: "DigJTMBGK07" - title: "Intentional Programming: a Host of Language Features" author: - name: "Eric {Van Wyk}" link: "http://www-users.cs.umn.edu/~evw/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" - name: "Ivan Sanabria Piretti" link: "https://researchr.org/alias/ivan-sanabria-piretti" - name: "Kevin Backhouse" link: "https://researchr.org/alias/kevin-backhouse" - name: "Paul Kwiatkowski" link: "https://researchr.org/alias/paul-kwiatkowski" year: "2001" doi: "http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.5286" links: doi: "http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.5286" tags: - "programming languages" - "programming" researchr: "https://researchr.org/publication/Wyk01intentionalprogramming%3A" cites: 0 citedby: 0 institution: "Oxford University Computing Laboratory " address: "Wolfson Building, Parks Road, Oxford OX1 3QD" kind: "techreport" key: "Wyk01intentionalprogramming:" - title: "First-class Attribute Grammars" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Kevin Backhouse" link: "https://researchr.org/alias/kevin-backhouse" - name: "S. Doaitse Swierstra" link: "http://www.cs.uu.nl/staff/doaitse.html" year: "2000" tags: - "attribute grammars" - "grammar" researchr: "https://researchr.org/publication/MoorBS00" cites: 0 citedby: 0 journal: "Informatica (Slovenia)" volume: "24" number: "3" kind: "article" key: "MoorBS00" - title: "A comparison of compilation techniques for trace monitors with free variables" author: - name: "Pavel Avgustinov" link: "http://www.comlab.ox.ac.uk/people/pavel.avgustinov/" - name: "Julian Tibble" link: "https://researchr.org/alias/julian-tibble" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://doi.acm.org/10.1145/1297846.1297905" links: doi: "http://doi.acm.org/10.1145/1297846.1297905" researchr: "https://researchr.org/publication/AvgustinovTM07a" cites: 0 citedby: 0 pages: "821-822" booktitle: "Companion to the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2007, October 21-25, 2007, Montreal, Quebec, Canada" editor: - name: "Richard P. Gabriel" link: "http://www.dreamsongs.com/RPG.html" - name: "David F. Bacon" link: "http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.index.html" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Guy L. Steele Jr." link: "http://research.sun.com/people/mybio.php?uid=25706" publisher: "ACM" isbn: "978-1-59593-865-7" kind: "inproceedings" key: "AvgustinovTM07a" - title: "Generic Program Transformation" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "1998" tags: - "generic programming" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/MoorS98" cites: 0 citedby: 0 pages: "116-149" booktitle: "Advanced Functional Programming" kind: "inproceedings" key: "MoorS98" - title: "Higher-order matching for program transformation" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Ganesh Sittampalam" link: "http://www.earth.li/~ganesh/" year: "2001" doi: "http://dx.doi.org/10.1016/S0304-3975(00)00402-3" links: doi: "http://dx.doi.org/10.1016/S0304-3975(00)00402-3" tags: - "higher-order transformations" - "transformation" - "program transformation" researchr: "https://researchr.org/publication/MoorS01" cites: 0 citedby: 0 journal: "Theoretical Computer Science" volume: "269" number: "1-2" pages: "135-162" kind: "article" key: "MoorS01" - title: "Generic Functional Programming with Types and Relations" author: - name: "Richard S. Bird" link: "http://www.comlab.ox.ac.uk/people/Richard.Bird/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Paul F. Hoogendijk" link: "https://researchr.org/alias/paul-f.-hoogendijk" year: "1996" tags: - "generic programming" - "functional programming" - "programming" researchr: "https://researchr.org/publication/BirdMH96" cites: 0 citedby: 0 journal: "Journal of Functional Programming" volume: "6" number: "1" pages: "1-28" kind: "article" key: "BirdMH96" - title: "Improve software quality with SemmleCode: an eclipse plugin for semantic code search" author: - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Elnar Hajiyev" link: "https://researchr.org/alias/elnar-hajiyev" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2007" doi: "http://doi.acm.org/10.1145/1297846.1297936" links: doi: "http://doi.acm.org/10.1145/1297846.1297936" tags: - "Eclipse" - "search" researchr: "https://researchr.org/publication/VerbaereHM07" cites: 0 citedby: 0 pages: "880-881" booktitle: "Companion to the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2007, October 21-25, 2007, Montreal, Quebec, Canada" editor: - name: "Richard P. Gabriel" link: "http://www.dreamsongs.com/RPG.html" - name: "David F. Bacon" link: "http://domino.research.ibm.com/comm/research_people.nsf/pages/bacon.index.html" - name: "Cristina Videira Lopes" link: "http://www.ics.uci.edu/~lopes/" - name: "Guy L. Steele Jr." link: "http://research.sun.com/people/mybio.php?uid=25706" publisher: "ACM" isbn: "978-1-59593-865-7" kind: "inproceedings" key: "VerbaereHM07" - title: "Stepping Stones over the Refactoring Rubicon -- Lightweight Language Extensions to Easily Realise Refactorings" author: - name: "Max Sch{\\\"a}fer" link: "https://researchr.org/alias/max-sch%7B%5Eb%22a%7Dfer" - name: "Mathieu Verbaere" link: "https://researchr.org/alias/mathieu-verbaere" - name: "Torbj{\\\"o}rn Ekman" link: "https://researchr.org/alias/torbj%7B%5Eb%22o%7Drn-ekman" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2009" tags: - "refactoring" researchr: "https://researchr.org/publication/ecoop09refactoring" cites: 0 citedby: 0 booktitle: "23rd European Conference on Object-Oriented Programming (ECOOP '09)" kind: "inproceedings" key: "ecoop09refactoring" - title: "Invited Talk: Pointwise Relational Programming" author: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Jeremy Gibbons" link: "http://www.comlab.ox.ac.uk/jeremy.gibbons/" year: "2000" doi: "http://link.springer.de/link/service/series/0558/bibs/1816/18160371.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1816/18160371.htm" tags: - "programming" researchr: "https://researchr.org/publication/MoorG00" cites: 0 citedby: 0 pages: "371-390" booktitle: "Algebraic Methodology and Software Technology. 8th International Conference, AMAST 2000, Iowa City, Iowa, USA, May 20-27, 2000, Proceedings" editor: - name: "Teodor Rus" link: "https://researchr.org/alias/teodor-rus" volume: "1816" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-67530-2" kind: "inproceedings" key: "MoorG00" - title: "Compiling Embedded Languages" author: - name: "Conal Elliott" link: "http://conal.net/" - name: "Sigbjorn Finne" link: "https://researchr.org/alias/sigbjorn-finne" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" year: "2000" doi: "http://link.springer.de/link/service/series/0558/bibs/1924/19240009.htm" links: doi: "http://link.springer.de/link/service/series/0558/bibs/1924/19240009.htm" tags: - "compiler" researchr: "https://researchr.org/publication/ElliottFM00" cites: 0 citedby: 0 pages: "9-27" booktitle: "Semantics, Applications, and Implementation of Program Generation, International Workshop SAIG 2000, Montreal, Canada, September 20, 2000, Proceedings" editor: - name: "Walid Taha" link: "http://www.cs.rice.edu/~taha/" volume: "1924" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "3-540-41054-6" kind: "inproceedings" key: "ElliottFM00" - title: "Compiler Construction, 18th International Conference, CC 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings" year: "2009" doi: "http://dx.doi.org/10.1007/978-3-642-00722-4" links: doi: "http://dx.doi.org/10.1007/978-3-642-00722-4" tags: - "compiler" researchr: "https://researchr.org/publication/cc%3A2009" cites: 0 citedby: 0 booktitle: "Compiler Construction, 18th International Conference, CC 2009, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009, York, UK, March 22-29, 2009. Proceedings" conference: "CC" editor: - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" - name: "Michael I. Schwartzbach" link: "http://www.brics.dk/~mis/" volume: "5501" series: "Lecture Notes in Computer Science" publisher: "Springer" isbn: "978-3-642-00721-7" kind: "proceedings" key: "cc:2009" - title: "Proceedings of the 2008 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation, PEPM 2008, San Francisco, California, USA, January 7-8, 2008" year: "2008" tags: - "semantics" - "partial evaluation" researchr: "https://researchr.org/publication/pepm%3A2008" cites: 0 citedby: 0 booktitle: "Proceedings of the 2008 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation, PEPM 2008, San Francisco, California, USA, January 7-8, 2008" conference: "PEPM" editor: - name: "Robert Glück" link: "http://www.diku.dk/hjemmesider/ansatte/glueck/" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" publisher: "ACM" isbn: "978-1-59593-977-7" kind: "proceedings" key: "pepm:2008" - title: "Proceedings of the 6th International Conference on Aspect-Oriented Software Development, AOSD 2007, Vancouver, British Columbia, Canada, March 12-16, 2007" year: "2007" researchr: "https://researchr.org/publication/aosd%3A2007" cites: 0 citedby: 0 booktitle: "Proceedings of the 6th International Conference on Aspect-Oriented Software Development, AOSD 2007, Vancouver, British Columbia, Canada, March 12-16, 2007" conference: "AOSD" editor: - name: "Brian M. Barry" link: "https://researchr.org/alias/brian-m.-barry" - name: "Oege de Moor" link: "http://progtools.comlab.ox.ac.uk/members/oege" volume: "208" series: "ACM International Conference Proceeding Series" publisher: "ACM" isbn: "1-59593-615-7" kind: "proceedings" key: "aosd:2007"