Guarded Program Transformations Using JTL

There is a growing research interest in employing the logic paradigm for making queries on software in general, and OOP software in particular. We describes a side-effect-free technique of using the paradigm for the general task of program transformation. Our technique offers a variety of applications, such as implementing generic structures (without erasure) in Java, a Lint-like program checker, and more. By allowing the transformation target to be a different language than the source (program translation), we show how the language can be employed for tasks like the generation of database schemas or XML DTDs that match Java classes.

[1]  Wolfgang De Meuter,et al.  Type Oriented Programming , 1997, ECOOP Workshops.

[2]  Eelco Visser,et al.  A Survey of Strategies in Program Transformation Systems , 2001, WRS.

[3]  Tal Cohen,et al.  Applying aspect-oriented software development to middleware frameworks , 2007 .

[4]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[5]  R. Smullyan First-Order Logic , 1968 .

[6]  Tal Cohen Joseph,et al.  JTL and the Annoying Subtleties of Precise "-Pattern Definitions , 2006 .

[7]  Sara Cohen,et al.  Datalog Programs over Infinite Databases, Revisited , 2007, DBPL.

[8]  Sebastian Maneth,et al.  Efficient Memory Representation of XML Documents , 2005, DBPL.

[9]  Abraham Silberschatz,et al.  Safety of recursive Horn clauses with infinite relations , 1987, PODS '87.

[10]  Yuri Gurevich,et al.  Datalog vs. first-order logic , 1989, 30th Annual Symposium on Foundations of Computer Science.

[11]  Brian Beckman,et al.  LINQ: reconciling object, relations and XML in the .NET framework , 2006, SIGMOD Conference.

[12]  Edsger W. Dijkstra,et al.  Guarded commands, non-determinacy and a calculus for the derivation of programs , 1975, Language Hierarchies and Interfaces.

[13]  Naftaly H. Minsky Towards Alias-Free Pointers , 1996, ECOOP.

[14]  Satoshi Matsuoka,et al.  ECOOP'97 — Object-Oriented Programming , 1997, Lecture Notes in Computer Science.

[15]  Andrew P. Black ECOOP 2005 - Object-Oriented Programming, 19th European Conference, Glasgow, UK, July 25-29, 2005, Proceedings , 2005, ECOOP.

[16]  Robert E. Filman,et al.  Realizing Aspects by Transforming for Events , 2002 .

[17]  Itay Maman,et al.  JTL: the Java tools language , 2006, OOPSLA '06.

[18]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

[19]  Kris De Volder Aspect-Oriented Logic Meta Programming , 1998, ECOOP Workshops.

[20]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[21]  Kim Mens,et al.  Application-specific models and pointcuts using a logic metalanguage , 2008, Comput. Lang. Syst. Struct..

[22]  Kris De Volder,et al.  Type-Oriented Logic Meta Programming , 1998 .

[23]  Donald E. Knuth,et al.  Structured Programming with go to Statements , 1974, CSUR.

[24]  Roberto Erick Lopez-Herrejon,et al.  A disciplined approach to aspect composition , 2006, PEPM '06.

[25]  Bjarne Stroustrup,et al.  Concepts – Design choices for template argument checking , 2003 .

[26]  Mira Mezini,et al.  Expressive Pointcuts for Increased Modularity , 2005, ECOOP.

[27]  Moshé M. Zloof Query-by-example: the invocation and definition of tables and forms , 1975, VLDB '75.

[28]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[29]  Ralf Lämmel,et al.  Declarative Aspect-Oriented Programming , 1999, PEPM.

[30]  Pascal Fradet,et al.  An Aspect Language for Robust Programming , 1999, ECOOP Workshops.

[31]  Theo D'Hondt,et al.  Aspect-Orientated Logic Meta Programming , 1999, Reflection.

[32]  Shan Shan Huang,et al.  Expressive and safe static reflection with MorphJ , 2008, PLDI '08.

[33]  Akihiko Tozawa,et al.  XML Validation for Context-Free Grammars , 2006, APLAS.

[34]  Rachid Guerraoui,et al.  ECOOP’ 99 — Object-Oriented Programming , 1999, Lecture Notes in Computer Science.

[35]  Edsger W. Dijkstra Non-determinacy and a calculus for the derivation of programs , 1975 .

[36]  Aske Simon Christensen,et al.  Precise Analysis of String Expressions , 2003, SAS.

[37]  Andy Kellens,et al.  An Experiment in Using Inductive Logic Programming to Uncover Pointcuts , 2004 .

[38]  Robert Balzer,et al.  On the Transformational Implementation approach to programming , 1976, ICSE '76.

[39]  Dave Thomas,et al.  ECOOP 2006 - Object-Oriented Programming , 2006 .

[40]  Elnar Hajiyev,et al.  codeQuest: Scalable Source Code Queries with Datalog , 2006, ECOOP.

[41]  Kris De Volder,et al.  Navigating and querying code without getting lost , 2003, AOSD '03.

[42]  Kim Mens,et al.  Application-specific models and pointcuts using a logic metalanguage , 2008, Comput. Lang. Syst. Struct..

[43]  Naftaly H. Minsky,et al.  Law-Governed Linda as a Coordination Model , 1994, ECOOP Workshop.

[44]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[45]  Davide Ancona,et al.  Jam---designing a Java extension with mixins , 2003, TOPL.

[46]  编程语言 Query by Example , 2010, Encyclopedia of Database Systems.

[47]  Pierre Cointe ECOOP ’96 — Object-Oriented Programming , 1996, Lecture Notes in Computer Science.

[48]  Robert Cartwright,et al.  A first-class approach to genericity , 2003, OOPSLA '03.

[49]  Gail C. Murphy,et al.  Explicit programming , 2002, AOSD '02.