From Syntactic Theories to Interpreters: A Specification Language and Its Compilation

Recent years have seen an increasing need of high-level specification languages and tools generating code from specifications. In this paper, we introduce a specification language, {\splname}, which is tailored to the writing of syntactic theories of language semantics. More specifically, the language supports specifying primitive notions such as dynamic constraints, contexts, axioms, and inference rules. We also introduce a system which generates interpreters from {\splname} specifications. A prototype system is implemented and has been tested on a number of examples, including a syntactic theory for Verilog.

[1]  Hélène Kirchner,et al.  A Compiler for Rewrite Programs in Associative-Commutative Theories , 1998, PLILP/ALP.

[2]  Matthias Felleisen,et al.  A call-by-need lambda calculus , 1995, POPL '95.

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

[4]  Frank Pfenning,et al.  Primitive recursion for higher-order abstract syntax , 1997, Theor. Comput. Sci..

[5]  Amr Sabry,et al.  Putting Operational Techniques to the Test: A Syntactic Theory for Behavioral Verilog , 1999, HOOTS.

[6]  Xavier Leroy,et al.  The ZINC experiment : an economical implementation of the ML language , 1990 .

[7]  John Tang Boyland,et al.  Statically checkable pattern abstractions , 1997, ICFP '97.

[8]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[9]  Dominique Clément,et al.  Natural semantics on the computer , 1984 .

[10]  Luc Maranget,et al.  Two Techniques for Compiling Lazy Pattern Matching , 1994 .

[11]  Dale Miller,et al.  From operational semantics to abstract machines , 1992, Mathematical Structures in Computer Science.

[12]  Eelco Visser,et al.  A core language for rewriting , 1998, WRLA.

[13]  Amr Sabry,et al.  Monadic state: axiomatization and type safety , 1997, ICFP '97.

[14]  Frank Pfenning,et al.  Higher-order abstract syntax , 1988, PLDI '88.

[15]  Stefan Blom,et al.  Cyclic Lambda Calculi , 1997, TACS.

[16]  Amr Sabry,et al.  Monadic encapsulation in ML , 1999, ICFP '99.