Transforming the .NET intermediate language using path logic programming

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 used in coding standard compiler optimisations, and also a number of obfuscating transformations. The object language is the Microsoft .NET intermediate language (IL).

[1]  Eric Van Wyk,et al.  Universal Regular Path Queries , 2003, High. Order Symb. Comput..

[2]  Dan Suciu,et al.  UnQL: a query language and algebra for semistructured data based on structural recursion , 2000, The VLDB Journal.

[3]  Peter Ross,et al.  Compiling Mercury to the .NET Common Language Runtime , 2001, Electron. Notes Theor. Comput. Sci..

[4]  Wanli Ma,et al.  An Overview of Temporal and Modal Logic Programming , 1994, ICTL.

[5]  Uwe Aßmann,et al.  How to Uniformly Specify Program Analysis and Transformation with Graph Rewrite Systems , 1996, CC.

[6]  Lee Naish,et al.  Higher-order logic programming , 1996 .

[7]  Yanhong A. Liu,et al.  Solving Regular Path Queries , 2002, MPC.

[8]  Laurie J. Hendren,et al.  Optimizing Java Bytecode Using the Soot Framework: Is It Feasible? , 2000, CC.

[9]  C. R. Ramakrishnan,et al.  Practical program analysis using general purpose logic programming systems—a case study , 1996, PLDI '96.

[10]  Andrew Whitechapel,et al.  Inside C , 2001 .

[11]  Thomas W. Reps,et al.  Interconvertibility of a class of set constraints and context-free-language reachability , 2000, Theor. Comput. Sci..

[12]  Christian S. Collberg,et al.  A Taxonomy of Obfuscating Transformations , 1997 .

[13]  Patrick Brézillon,et al.  Lecture Notes in Artificial Intelligence , 1999 .

[14]  Amy P. Felty,et al.  A Logic Programming Approach to Implementing Higher-Order Term Rewriting , 1991, ELP.

[15]  C. R. Ramakrishnan,et al.  Logic Programming and Model Checking , 1998, PLILP/ALP.

[16]  Gopalan Nadathur,et al.  Higher-Order Logic Programming , 1986, ICLP.

[17]  Oege de Moor,et al.  Imperative Program Transformation by Rewriting , 2001, CC.

[18]  Robert Paige,et al.  Viewing A Program Transformation System At Work , 1994, PLILP.

[19]  Mary Lou Soffa,et al.  An approach for exploring code improving transformations , 1997, TOPL.

[20]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

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

[22]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[23]  Aart J. C. Bik,et al.  Transformation mechanisms in MT1 , 2000 .

[24]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[25]  Eelco Visser,et al.  Stratego: A Language for Program Transformation Based on Rewriting Strategies , 2001, RTA.

[26]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

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

[28]  Claude Kirchner,et al.  Rewriting with Strategies in ELAN: A Functional Semantics , 2001, Int. J. Found. Comput. Sci..

[29]  Eric Gunnerson A Programmer’s Introduction to C# , 2001, Apress.

[30]  Roger F. Crew ASTLOG: A Language for Examining Abstract Syntax Trees , 1997, DSL.

[31]  Hidehiko Masuhara,et al.  Compilation Semantics of Aspect-Oriented Programs , 2002 .