Abstract
This paper presents an experimental implementation of a self-applicable partial evaluator in Prolog used for compiler generation and compiler generator generation. The partial evaluator is an extension of a simple meta interpreter for Prolog programs, and its self-application is straightforward because of its simplicity. A method of incremental compilation is also described as a promising application of the partial evaluator for knowledge-based systems.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Futamura, Y., “Partial Evaluation of Computation Process—An Approach to a Compiler-Compiler”,Systems, Computers, Controls, Vol. 2, No. 5, pp. 45–50, 1971.
Ershov, A. P., “On the Essence of Compilation”, inFormal Description of Programming Concepts (E. J. Neuhold), North-Holland, pp. 391–420, 1978.
Takeuchi, A. and Furukawa, K., “Partial Evaluation of Prolog Programs and Its Application to Meta Programming”, inInformation Processing 86 (H.-J. Kugler, ed.), Dublin, Ireland, North-Holland, pp. 415–420, 1986.
Beckman, L., Haraldsson, A., Oskarsson, Ö. and Sandewall, E., “A Partial Evaluator, and Its Use as a Programming Tool”,Artificial Intelligence, Vol. 7, No. 4, pp. 319–357, 1976.
Haraldsson, A., “A Program Manipulation System Based on Partial Evaluation”,Linköping Studies in Science and Technology Dissertations 14, Linköping University, Sweden, 1977.
Jones, N. D., Sestoft, P. and Søndergaard, H., “An Experiment in Partial Evaluation: The Generation of a Compiler Generator”, inRewriting Techniques and Applications (J.-P. Jouannaud, ed.),Lecture Notes in Computer Science, 202, Springer-Verlag, pp. 124–140, 1985.
Sterling, L. and Beer, R. D., “Incremental Flavor-Mixing of Meta-Interpreters for Expert System Construction”,Proc. 3rd Symposium on Logic Programming, Salt Lake City, Utah, pp. 20–27, 1986.
Gallagher, J., “Transforming Logic Programs by Specialising Interpreters”,ECAI-86 7th European Conference on Artificial Intelligence, Brighton Centre, United Kingdom, pp. 109–122, 1986.
Coscia, P., Franceschi, P., Levi, G. and Torre, L., “Object Level Reflection of Inference Rules by Partial Evaluation”, inWorkshop on Meta-Level Architectures and Reflection (P. Maes and D. Nardi, eds.), Sardinia, Italy, North-Holland, 1986.
Komorowski, H. J., “Partial Evaluation as a Means for Inferencing Data Structures in an Applicative Language: A Theory and Implementation in the Case of Prolog”,Ninth ACM Symposium on Principles of Programming Languages, Albuquerque, New Mexico, pp. 255–267, 1982.
Kursawe, K., “How to Invent a Prolog Machine, inThird International Conference on Logic Programming, London (E. Shapiro, ed.), United Kingdom,Lecture Notes in Computer Science, 225, Springer-Verlag, pp. 134–148, 1986.
Pereira, L. M., Pereira, F. C. N. and Warren, D. H. D., “User’s Guide to DECsystem 10 PROLOG”,Occasional Paper, 15, Dept. of Artificial Intelligence, Edinburgh, 1979.
Kahn, K. M., “A Partial Evaluator of Lisp Programs Written in Prolog”, inFirst International Logic Programming Conference (M. Van Caneghem, ed.), Marseille, France, pp. 19–25, 1982.
Tamaki, H. and Sato, T., “Unfold/Fold Transformation of Logic Programs”,Proc. of The Second International Logic Programming Conference, Uppsala, pp. 127–138, 1984.
Fujita, H., “On Automating Partial Evaluation of Prolog Programs”,ICOT Technical Memorandum, TM-250, Tokyo, 1987. [in Japanese]
Venken, R., “A Prolog Meta-interpreter for Partial Evaluation and Its Application to Source to Source Transformation and Query-Opimization”, inECAI-84, Advances in Artificial Intelligence (T. O’Shea, ed.), Pisa, Italy, North-Holland, pp. 91–100, 1984.
Vasey, P., “Qualified Answers and Their Application to Transformation”, inThird International Conf. on Logic Programming, London (E. Shapiro, ed.), United Kingdom,Lecture Notes in Computer Science, 225, Springer-Verlag, pp. 425–432, 1986.
Shapiro, E., “Logic Programs with Uncertainties: A Tool for Implementing Rule-based Systems”,Proc. IJCAI-83, pp. 529–532, 1983.
Naish, L., “Negation and Control in Prolog”,Lecture Notes in Computer Science, 238, Springer-Verlag, 1985.
Fujita, H., “An Algorithm for Partial Evaluation with Constraints”,ICOT Technical Memorandum, TM-367, Tokyo, 1987.
Furukawa, K. and Okumura, A., “Unfolding Rules for GHC Programs”,ICOT Technical Report, TR-277, Tokyo, 1987.
Author information
Authors and Affiliations
About this article
Cite this article
Fujita, H., Furukawa, K. A self-applicable partial evaluator and its use in incremental compilation. New Gener Comput 6, 91–118 (1988). https://doi.org/10.1007/BF03037133
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF03037133