Pragmatic aspects of two-level denotational meta-languages

  • Hanne R. Nielson
  • Flemming Nielson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 213)


This work is part of a research project on automatic generation of optimazing compilers from denotational language definitions. The novel aspect of our approach is that we are based on a two-level meta-language allowing us to distinguish between compile-time and run-time, and thereby to formalize e.g. the distinction between "static expression procedures" and "expression procedures" of Tennent (1981). In this paper we discuss some of the problems encountered when writing denotational definitions using a two-level meta-language. We consider the meta-language TMLS introduced in Nielson (1986a) as well as its restricted version TMLSC developed in Nielson and Nielson (1986) for automatic code generation. Based on an example we argue that rewriting a language definition using TMLS in TMLSC really means introducing some notion of activation record. This observation may pave the way for a formalization of the transformations on semantic definitions considered by Milne and Strachey (1976) as being imposed by different meta-languages.


Denotational Semantic Smash Product Attribute Grammar Semantic Definition Automatic Code Generation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. Aho, A.V. and Ullman, J.D., Principles of Compiler Design, Addison-Wesley (1977).Google Scholar
  2. Appel, A.W., Semantics-directed code generation, 12. POPL, 315–324 (1985).Google Scholar
  3. Backus, J.W., Can programming be liberated from the von Neumann style? A functional style and its algebra of programs, CACM 21:8, 613–641 (1978).Google Scholar
  4. Ganzinger, H., Giegerich, R., Möncke, U. and Wilhelm, R., A truly generative semantics-directed compiler generator, SIGPLAN 82 Symposium on Compiler Construction, 172–184 (1982).Google Scholar
  5. Jones, N.D. and Christiansen, H., Control flow treatment in a simple semantics-directed compiler generator, In: Formal description of programming concepts II, (ed. D. Bjørner) North-Holland (1982).Google Scholar
  6. Gordon, M.J.C., The denotational description of programming languages, an introduction, Springer Verlag (1979).Google Scholar
  7. Kastens, U., The GAG-system — a tool for compiler construction, In: Methods and tools for compiler construction, (ed: B. Lorho) Cambridge University Press, 165–182 (1984).Google Scholar
  8. Milne, R. and Strachey, C., A theory of programming language semantics, Halsted Press (1976).Google Scholar
  9. Mosses, P.D., Abstract semantic algebras! In: Formal description of programming concepts II, (ed. D. Bjørner) North-Holland (1982).Google Scholar
  10. Nielson, F., Anstract interpretation using domain theory, Ph.D. thesis, Edinburgh University (1984).Google Scholar
  11. Nielson, F., Abstract interpretation of denotational definitions, to appear in STACS Proceedings, LNCS, Springer Verlag (1986a).Google Scholar
  12. Nielson, F., Correctness of code generation from a two-level meta-language, in these proceedings (1986b).Google Scholar
  13. Nielson, F. and Nielson, H.R., Code generation from two-level denotational meta-languages, to appear in proceedings from workshop on Programs as Data Objects (ed. H. Ganzinger, N.D. Jones), LNCS, Springer Verlag (1986).Google Scholar
  14. Paulson, L., Compiler generation from denotational semantics, In: Methods and tools for compiler construction, (ed. B. Lorho) Cambridge University Press, 219–250 (1984).Google Scholar
  15. Rault, J.-C. and Sethi, R., Properties of a notation for combining functions, JACM 30:3, 595–611 (1983).Google Scholar
  16. Räihä, K.-J., Attribute grammar design using the compiler writing system HLP, In: Methods and tools for compiler construction, (ed. B. Lorho) Cambridge University Press, 183–206 (1984).Google Scholar
  17. Sethi, R., Control flow aspects of semantics directed compiling, ACM TOPLAS 5:4, 554–595 (1983).Google Scholar
  18. Smyth, M.B. and Plotkin, G.D., The category-theoretic solution of recursive domain equations, SIAM J. Comput. 11:4, 761–783 (1982).Google Scholar
  19. Stoy J., Denotational semantics, The MIT Press (1977).Google Scholar
  20. Tennent, R.D., Principles of programming languages, Prentice Hall (1981).Google Scholar
  21. Wand, M., Deriving target code as a representation of continuation semantics, ACM TOPLAS, 4:3, 496–517 (1982).CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1986

Authors and Affiliations

  • Hanne R. Nielson
    • 1
  • Flemming Nielson
    • 1
  1. 1.Institute of Electronic SystemsAalborg University CentreAalborg CDenmark

Personalised recommendations