@techreport{R-89-52, TITLE = {Generating Interpreters from Denotational Definitions using C++ as a Meta-language}, AUTHOR = {Mikael Pettersson}, YEAR = {1989}, NUMBER = {R-89-52}, INSTITUTION = ida, ADDRESS = idaaddr, ABSTRACTURL = {/publications/cgi-bin/tr-fetch.pl?r-89-52+abstr}, ABSTRACT = {In this paper we present a method to automatically generate interpreters from strongly typed denotational definitions. C++ is used as a meta-language in a way that largely preserves the structure of denotational definitions in standard mathematical notation. The object-oriented features of C++ together with operator overloading and dynamic typing are used to achieve this goal. There are several advantages with this method. Compared to meta-languages such as Scheme, the strong typing of C++ eliminates many errors in denotational specifications already at compile-time. Also, denotational definitions expressed in C++ can be used together with common compiler-writing tools such as Yacc, and be compiled efficiently. Perhaps most important: this method facilitates more widespread use of denotational techniques, by embedding them within a common industrial-strength language.}, IDANR = {LiTH-IDA-R-89-52}