Constructing call-by-value continuation semantics
The primary motivation behind this paper is an interest in transforming one semantic description for a language into another related description of the same language. Since direct and continuation semantics have been studied in some detail, they are obvious test-beds for suggesting the problems that might be encountered in the process. One of the problems is that the semantic objects in two descriptions of a language may be quite dissimilar. For example, function values of procedures in direct semantics are quite different from function values in continuation semantics. Milne and Reynolds have defined predicates which can be used to relate the two kinds of function values. Starting with such predicates we define transformations and then show that the transformations preserve the predicates. The transformations are used to construct continuation semantics, starting from a direct semantics of a language with procedures called by value.
Unable to display preview. Download preview PDF.
- 1.G. Huet, “Confluent reductions: abstract properties and applications to term rewriting systems,” Eighteenth Annual IEEE Symposium on Foundations of Computer Science, pp. 30–45 (October 1977).Google Scholar
- 2.B. W. Kernighan and D. M. Ritchie, The C Programming Language, Prentice-Hall, Englewood Cliffs, NJ (1978).Google Scholar
- 3.R. E. Milne and C. Strachey; A Theory of Programming Language Semantics, 2 Vols., Chapman and Hall, London, and John Wiley, New York (1976).Google Scholar
- 4.F. L. Morris, “The next 700 programming language descriptions,” unpublished manuscript (1970).Google Scholar
- 5.J. C. Reynolds, “On the relation between direct and continuation semantics,” pp. 141–156 in 2nd Colloquium on Automata, Languages and Programming, Lecture Notes in Computer Science 14, Springer-Verlag, Berlin (1974).Google Scholar
- 6.D. Scott and C. Strachey, “Towards a mathematical semantics for computer languages,” pp. 19–46 in Proceedings of the Symposium on Computers and Automata, Polytechnic Press, Brooklyn, N. Y. (April 1971).Google Scholar
- 7.R. Sethi, “Testing for the Church-Rosser property,” J. ACM 21(4), pp. 671–679, Errata in J. ACM 22(3) p. 424 (July 1975). (October 1974).Google Scholar
- 8.R. Sethi and A. Tang, “Transforming direct into continuation semantics for a simple imperative language,” unpublished manuscript, Bell Laboratories, Murray Hill, NJ (1978).Google Scholar
- 9.J. E. Stoy, Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory, MIT Press, Cambridge, MA (1977).Google Scholar
- 10.J. E. Stoy, “The congruence of two programming language definitions,” unpublished manuscript (1976).Google Scholar
- 11.C. Strachey and C. Wadsworth, “Continuations: a mathematical semantics which can deal with full jumps,” Technical Monograph PRG-11, Programming Research Group, Oxford University (1974).Google Scholar
- 12.R. D. Tennent, “The denotational semantics of programming languages,” Comm. ACM 19(8), pp. 437–453 (August 1976).Google Scholar