Migration of Common Lisp Programs to the Java Platform -The Linj Approach

Translation between high-level programming languages might be the last resort to preserve software written in languages that are no longer widely used. Although the translation process has many similarities with the compilation process, it becomes much more complex when it must produce maintainable code. In this case, besides preserving the semantics of the original software, the translator must also generate a program that obeys the pragmatics of the target language and that should be as similar as possible to an equivalent human-written program in that language. In this paper, we present Linj, a translator between common Lisp and Java that generates human-readable Java code that can be further maintained by Java programmers. The translator explores extensive knowledge of the syntax, semantics and pragmatics of both common Lisp and Java, is extensible and has been successfully used in several industry projects

[1]  John Tang Boyland,et al.  Parasitic methods: an implementation of multi-methods for Java , 1997, OOPSLA '97.

[2]  Chris Verhoef,et al.  The Realities of Language Conversions , 2000, IEEE Softw..

[3]  Hausi A. Müller,et al.  C to Java migration experiences , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.

[4]  Mark Harman,et al.  7 th European Conference on Software Maintenance and Reengineering , 2003 .

[5]  K. A. Broughan,et al.  Fortran to Lisp translation using f2cl , 1996 .

[6]  J. Eccles Porting from Common Lisp with Flavors to C++ , 1988, C++ Conference.

[7]  Christopher W. Pidgeon,et al.  DMS®: Program Transformations for Practical Scalable Software Evolution , 2002, IWPSE '02.

[8]  Richard P. Gabriel,et al.  Performance and evaluation of Lisp systems , 1985 .

[9]  Guy L. Steele,et al.  Growing a Language , 1999, High. Order Symb. Comput..

[10]  Robert M. MacGregor,et al.  STELLA - A Lisp-Like Language for Symbolic Programming with Delivery in Common Lisp, C++, and Java , 1999 .

[11]  Arie van Deursen,et al.  The Asf+Sdf Meta-Environment: a Component-Based Language Development Environment , 2001, LDTA@ETAPS.

[12]  Arie van Deursen,et al.  The ASF+SDF Meta-environment , 1993, AMAST.

[13]  Ivan Moore,et al.  Babel - A Translator from Smalltalk into CLOS , 1994 .

[14]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[15]  I.D. Baxter,et al.  DMS/spl reg/: program transformations for practical scalable software evolution , 2004, Proceedings. 26th International Conference on Software Engineering.

[16]  Henry G. Baker,et al.  CONS should not CONS its arguments, part II: Cheney on the M.T.A. , 1995, SIGP.

[17]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[18]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..