Reusable Semantic Specifications of Programming Languages

{labra}@lsi.uniovi.es Abstract. In this tutorial, we compare the main approaches for programming language semantic specification from the point of view of modularity and reusability. We will also present reusable monadic semantics, which combines monadic semantics with generic programming concepts and we will present the specification of simple functional, imperative and logic programming languages. The specifications are made from reusable semantic building blocks, which facilitates the comparison between different paradigms.

[1]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[2]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[3]  Masato Takeichi,et al.  Towards Manipulation of Mutually Recursive Functions , 1998, Fuji International Symposium on Functional and Logic Programming.

[4]  Christopher Strachey,et al.  Fundamental Concepts in Programming Languages , 2000, High. Order Symb. Comput..

[5]  Richard S. Bird,et al.  Algebra of programming , 1997, Prentice Hall International series in computer science.

[6]  Hermano Perrelli de Moura,et al.  An Action Semantics Integrated Development Environment , 2001, Electron. Notes Theor. Comput. Sci..

[7]  Deryck Forsyth Brown,et al.  Actress: An Action Semantics Directed Compiler Generator , 1992, CC.

[8]  Paul Hudak,et al.  Modular Denotational Semantics for Compiler Construction , 1996, ESOP.

[9]  Mark P. Jones,et al.  A system of constructor classes: overloading and implicit higher-order polymorphism , 1993, FPCA '93.

[10]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.

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

[12]  J. E. Labra Gayo,et al.  LPS: A Language Prototyping System Using Modular Monadic Semantics , 2001, LDTA@ETAPS.

[13]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[14]  Peter D. Mosses,et al.  Theory and Practice of Action Semantics , 1996, MFCS.

[15]  Egon Börger,et al.  The Origins and the Development of the ASM Method for High Level System Design and Analysis , 2002, J. Univers. Comput. Sci..

[16]  John Hamer,et al.  A Modular Monadic Action Semantics , 1997, DSL.

[17]  Norman Y. Foo,et al.  A denotational semantics for Prolog , 1989, ACM Trans. Program. Lang. Syst..

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

[19]  Gary T. Leavens,et al.  A Quick Overview of Larch/C++ , 1994, J. Object Oriented Program..

[20]  Paul Hudak,et al.  Modular monadic semantics and compilation , 1998 .

[21]  Martin Gonzalez-Rodriguez,et al.  A Language Prototyping Tool Based on Semantic Building Blocks , 2001, EUROCAST.

[22]  Yuri Gurevich,et al.  Evolving algebras 1993: Lipari guide , 1995, Specification and validation methods.

[23]  Peter D. Mosses Foundations of Modular SOS , 1999, MFCS.

[24]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[25]  Ralf Hinze Polytypic Values Possess Polykinded Types , 2000, MPC.

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

[27]  Roland Carl Backhouse,et al.  Generic Programming: An Introduction , 1998, Advanced Functional Programming.

[28]  Nikolaos Papaspyrou,et al.  A Formal Semantics for the C Programming Language , 2000 .

[29]  Peter D. Mosses Action Semantics , 1986, ADT.

[30]  Maarten M. Fokkinga,et al.  Law and order in algorithmics , 1992 .

[31]  Philip Wadler,et al.  The essence of functional programming , 1992, POPL '92.

[32]  Ralf Hinze Prological Features in a Functional Setting Axioms and Implementation , 1998, Fuji International Symposium on Functional and Logic Programming.

[33]  Mark P. Jones A system of constructor classes: overloading and implicit higher-order polymorphism , 1993, FPCA '93.

[34]  Mark P. Jones,et al.  First-class polymorphism with type inference , 1997, POPL '97.

[35]  Lennart Augustsson,et al.  Cayenne—a language with dependent types , 1998, ICFP '98.

[36]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[37]  G. Malcolm,et al.  Data Structures and Program Transformation , 1990, Sci. Comput. Program..

[38]  Juan Manuel Cueva Lovelle,et al.  Reusable monadic semantics of logic programs with arithmetic predicates , 2001, APPIA-GULP-PRODE.

[39]  Peter D. Mosses,et al.  Composing programming languages by combining action-semantics modules , 2001, Sci. Comput. Program..

[40]  Paul Klint,et al.  Semantics of programming languages: a tool-oriented approach , 1999, SIGP.

[41]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[42]  Benedict R. Gaster,et al.  A Polymorphic Type System for Extensible Records and Variants , 1996 .

[43]  Ralf Hinze,et al.  Deriving backtracking monad transformers , 2000, ICFP '00.

[44]  Peter J. Stuckey,et al.  Type Classes and Constraint Handling Rules , 2000, ArXiv.

[45]  Peter Ørbæk OASIS: An Optimizing Action-Based Compiler Generator , 1994, CC.

[46]  J. E. Labra Gayo,et al.  Specification of Logic Programming Languages from Reusable Semantic Building Blocks , 2002, Electron. Notes Theor. Comput. Sci..

[47]  Nick Benton,et al.  Monads and Effects , 2000, APPSEM.

[48]  Roland Carl Backhouse,et al.  Program construction and verification , 1986, PHI Series in computer science.

[49]  Andrew M. Pitts,et al.  Metalanguages and Applications , 1997 .

[50]  Abel,et al.  A formal semantics of patterns in XSLT , 2000 .

[51]  Egon Börger,et al.  A Mathematical Definition of Full Prolog , 1995, Sci. Comput. Program..

[52]  Kenneth Slonneger,et al.  Formal syntax and semantics of programming languages , 1994 .

[53]  Egon Börger,et al.  A Programmer Friendly Modular Definition of the Semantics of Java , 1999, Formal Syntax and Semantics of Java.

[54]  Anne Kaldewaij,et al.  Programming - the derivation of algorithms , 1990, Prentice Hall international series in computer science.