Abstract
We have discussed partial evaluation of programs in statically scoped Lisp-like languages and described a self-applicable partial evaluator, mix, that has been successfully applied to generate compilers for toy languages, and even to generate a compiler generator. We assessed mix and gave tables of running times and space usage to illustrate its behavior.
As a basis for this, we introduced a formal framework for partial evaluation, compiling, and compiler generation which enabled the presentation of mix's applications. We also described and discussed the language Mixwell that was designed as the subject language for mix.
Keywords
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.
The full version of this paper is to appear in the journal LISP and Symbolic Computation
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
Beckman, L. et al., A partial evaluator, and its use as a programming tool, Artificial Intelligence 7, 4 (1976) 319–357
Bulyonkov, M. A., Polyvariant mixed computation for analyzer programs, Acta Informatica 21 (1984) 473–484
Cousot, P. and R. Cousot, Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints, Proc. Fourth ACM POPL Symp., Los Angeles, California 1977, 238–252
Dybkjær, H., Parsers and partial evaluation: An experiment. DIKU student report No. 85-7-15, University of Copenhagen, Denmark, 1985
Emanuelson, P. and A. Haraldsson, On compiling embedded languages in Lisp, Proc. 1980 Lisp Conf., Stanford, California (1980) 208–215
Ershov, A. P., On the essence of compilation, Formal Description of Programming Concepts (ed. E. J. Neuhold), North-Holland 1978, 391–418
Ershov, A. P., Mixed computation: Potential applications and problems for study, Theoretical Computer Science 18 (1982) 41–67
Futamura, Y., Partial evaluation of computation process — an approach to a compiler-compiler, Systems, Computers, Controls 2, 5 (1971) 45–50
Ganzinger, H. and N. D. Jones (eds.), Programs as Data Objects, Lecture Notes in Computer Science 217, Springer-Verlag 1986
Haraldsson, A., A partial evaluator, and its use for compiling iterative statements in Lisp, Proc. Fifth ACM POPL Symp., Tucson, Arizona 1978, 195–202
Jones, N. D., P. Sestoft, and H. Søndergaard, An experiment in partial evaluation: The generation of a compiler generator, Rewriting Techniques and Applications (ed. J.-P. Jouannaud), Lecture Notes in Computer Science 202, Springer-Verlag 1985, 124–140
Kahn, K. M., A partial evaluator of Lisp programs written in Prolog, Proc. First Int. Logic Programming Conf. (ed. M. Van Caneghem), Marseille, France 1982, 19–25
Kahn, K. M. and M. Carlsson, The compilation of Prolog programs without the use of a Prolog compiler, Proc. Int. Conf. Fifth Generation Computer Systems, Tokyo, Japan 1984, 348–355
Kleene, S. C., Introduction to Metamathematics, Van Nostrand 1952
Komorowski, H. J., A Specification of an Abstract Prolog Machine and Its Application to Partial Evaluation, Linköping Studies in Science and Technology Dissertations 69, University of Linköping, Sweden 1981
Kugler, H.-J. (ed.), Information Processing 86, Proc. IFIP 86 Conf., North-Holland 1986
Lombardi, L. A., Incremental computation, Advances in Computers 8 (ed. F. L. Alt and M. Rubinoff), Academic Press 1967, 247–333
Mogensen, T. Æ, The Application of Partial Evaluation to Ray-Tracing, Master's thesis, University of Copenhagen, Denmark, 1986
Mosses, P. D., SIS — Semantics Implementation System, Reference Manual and User Guide, DAIMI Report MD-30, University of Aarhus, Denmark 1979
Paulson, L., A semantics-directed compiler generator, Proc. Ninth ACM POPL Symp., Albuquerque, New Mexico 1982, 224–233
Rees, J. and W. Clinger (eds.), Revised3 report on the algorithmic language Scheme, SIGPLAN Notices 21, 12 (1986) 37–79
Rogers, H., Theory of Recursive Functions and Effective Computability, McGraw-Hill 1967
Safra, S. and E. Shapiro, Meta interpreters for real, in [Kugler 1986], 271–278
Sestoft, P., The structure of a self-applicable partial evaluator, in [Ganzinger and Jones 1986], 236–256
Takeuchi, A. and K. Furukawa, Partial evaluation of Prolog programs and its application to meta programming, in [Kugler 1986], 415–420
TsNIPIASS, Bazisnyi Refal i yego Realizatsiya na Vychislitelnykh Mashinakh, TsNIPIASS, Gosstroi SSSR, Moscow 1977
Turchin, V. F., A supercompiler system based on the language Refal, SIGPLAN Notices 14, 2 (1979) 46–54
Turchin, V. F., R. M. Nirenberg, and D. V. Turchin, Experiments with a supercompiler, Proc. 1982 ACM Symp. Lisp and Functional Programming, Pittsburgh, Pennsylvania 1982, 47–55
Venken, R., A Prolog meta-interpreter for partial evaluation and its application to source to source transformation and query-optimisation, Proc. ECAI-84, Pisa, Italy (ed. T. O'Shea), North-Holland 1984, 91–100
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1988 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Jones, N.D., Sestoft, P., Søndergaard, H. (1988). Extended abstract of MIX: A self-applicable partial evaluator for experiments in compiler generation. In: Main, M., Melton, A., Mislove, M., Schmidt, D. (eds) Mathematical Foundations of Programming Language Semantics. MFPS 1987. Lecture Notes in Computer Science, vol 298. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-19020-1_21
Download citation
DOI: https://doi.org/10.1007/3-540-19020-1_21
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-19020-2
Online ISBN: 978-3-540-38920-0
eBook Packages: Springer Book Archive