A Rewriting Based Approach to OO Language Prototyping and Design

This paper introduces a framework for the rapid prototyping of object oriented programming languages. This framework is based on specifying the semantics of a language using term rewriting and a continuation-based representation of control. The notation used, called K, has been developed specifically for programming languages to overcome limitations in more general rewriting notation, and provides for more compact and modular language definitions. The K notation is used to define KOOL, a dynamic object-oriented language with many features found in mainstream object-oriented languages. The ability to rapidly prototype language features is shown both in the definition of KOOL and in the creation of a concurrent extension to the language.

[1]  José Meseguer,et al.  Rewriting logic: roadmap and bibliography , 2002, Theor. Comput. Sci..

[2]  Einar Broch Johnsen,et al.  A Run-Time Environment for Concurrent Objects With Asynchronous Method Calls , 2005, WRLA.

[3]  José Meseguer,et al.  Rewriting Logic Semantics: From Language Specifications to Formal Analysis Tools , 2004, IJCAR.

[4]  Alberto Verdejo,et al.  Implementing CCS in Maude 2 , 2002, Electron. Notes Theor. Comput. Sci..

[5]  Mitchell Wand,et al.  Essentials of programming languages , 2008 .

[6]  Eelco Visser,et al.  Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9 , 2003, Domain-Specific Program Generation.

[7]  Grigore Rosu,et al.  A Rewrite Framework for Language Definitions and for Generation of Efficient Interpreters , 2006, WRLA.

[8]  Carolyn L. Talcott,et al.  Plan in Maude: Specifying an Active Network Programming Language , 2004, WRLA.

[9]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[10]  Paul Klint,et al.  Compiling language definitions: the ASF+SDF compiler , 2000, TOPL.

[11]  Kenneth Slonneger,et al.  Formal syntax and semantics of programming languages - a laboratory based approach , 1995 .

[12]  Grigore Rosu,et al.  KOOL: A K-based Object-Oriented Language , 2006 .

[13]  MeseguerJosé Conditional rewriting logic as a unified model of concurrency , 1992 .

[14]  José Meseguer,et al.  Formal JVM Code Analysis in JavaFAN , 2004, AMAST.

[15]  Christophe Ringeissen,et al.  A Pattern Matching Compiler for Multiple Target Languages , 2003, CC.

[16]  Claude Kirchner,et al.  An overview of ELAN , 1998, WRLA.

[17]  José Meseguer,et al.  Modular Rewriting Semantics in Practice , 2004, WRLA.

[18]  Claude Kirchner,et al.  Formal validation of pattern matching code , 2005, Trustworthy Software.

[19]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[20]  John C. Reynolds,et al.  The discoveries of continuations , 1993, LISP Symb. Comput..

[21]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[22]  José Meseguer,et al.  Formal Analysis of Java Programs in JavaFAN , 2004, CAV.

[23]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[24]  Matthias Felleisen,et al.  A Visual Environment for Developing Context-Sensitive Term Rewriting Systems , 2004, RTA.

[25]  José Meseguer,et al.  A Rewriting Semantics for ABEL with Applications to Hardware/Software Co-Design and Analysis , 2006, WRLA.

[26]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[27]  Carolyn L. Talcott,et al.  Practical Techniques for Language Design and Prototyping , 2005, Foundations of Global Computing.

[28]  Narciso Martí-Oliet,et al.  Maude: specification and programming in rewriting logic , 2002, Theor. Comput. Sci..

[29]  Joseph A. Goguen,et al.  Algebraic semantics of imperative programs , 1996, Foundations of computing series.

[30]  Mark-Oliver Stehr,et al.  Representing the MSR Cryptoprotocol Specification Language in an Extension of Rewriting Logic with Dependent Types , 2004, WRLA.

[31]  Marcelo d'Amorim,et al.  An Equational Specification for the Scheme Language , 2005, J. Univers. Comput. Sci..

[32]  Narciso Martí-Oliet,et al.  The Maude 2.0 System , 2003, RTA.

[33]  Patrick Borras,et al.  Centaur: the system , 1988, Software Development Environments.

[34]  Guy L. Steele,et al.  Building interpreters by composing monads , 1994, POPL '94.

[35]  José Meseguer,et al.  The Rewriting Logic Semantics Project , 2006, SOS@ICALP.

[36]  Koushik Sen,et al.  An Executable Specification of Asynchronous Pi-Calculus Semantics and May Testing in Maude 2.0 , 2002, Electron. Notes Theor. Comput. Sci..

[37]  Joseph A. Goguen,et al.  Software Engineering with Obj: Algebraic Specification In Action , 2010 .

[38]  Fabricio Chalub,et al.  A Modular Rewriting Semantics for CML , 2004, J. Univers. Comput. Sci..