|
ABSTRACT
The three classic Futamura projections stand as a cornerstone in the development of partial evaluation. The observation by Futamura [1983], that compiler generators produced by his third projection are self-generating, and the insight by Klimov and Romanenko [1987], that Futamura's abstraction scheme can be continued beyond the three projections, are systematically investigated, and several new applications for compiler generators are proposed. Possible applications include the generation of quasi-online compiler generators and of compiler generators for domain-specific languages, and the bootstrapping of compiler generators from program specializers. From a theoretical viewpoint, there is equality between the class of self-generating compiler generators and the class of compiler generators produced by the third Futamura projection. This exposition may lead to new practical applications of compiler generators, as well as deepen our theoretical understanding of program specialization.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
L. O. Andersen. Program analysis and specialization for the C programming language. Ph.D. thesis. DIKU Report 94/19, Dept. of Computer Science, University of Copenhagen, 1994.
|
| |
3
|
|
| |
4
|
|
| |
5
|
|
| |
6
|
A. Bondorf, D. Dussart. Improving CPS-based partial evaluation: writing cogen by hand. In Workshop on Partial Evaluation and Semantics-Based Program Manipulation, Technical Report 94/9, 1--9. University of Melbourne, Australia, 1994.
|
| |
7
|
P. Bratley, J. Millo. Computer recreations: self-reproducing programs. Software -- Practice and Experience, 2(4):397--400, 1972.
|
| |
8
|
|
| |
9
|
|
 |
10
|
|
| |
11
|
A. P. Ershov. On the partial computation principle. Information Processing Letters, 6(2):38--41, 1977.
|
| |
12
|
A. P. Ershov. On the essence of compilation. In E. Neuhold (ed.), Formal Description of Programming Concepts, 391--420. North-Holland, 1978.
|
| |
13
|
|
| |
14
|
Y. Futamura. EL1 partial evaluator. Progress report, Center for Research in Computing Technology, Harvard University, 1973. Extract from the introduction reproduced in {16}.
|
| |
15
|
|
| |
16
|
|
| |
17
|
Yoshihiko Futamura , Zenjiro Konishi , Robert Glück, WSDFU: program transformation system based on generalized partial computation, The essence of computation: complexity, analysis, transformation, Springer-Verlag New York, Inc., New York, NY, 2002
|
| |
18
|
R. Glück. On the generation of specializers. Journal of Functional Programming, 4(4):499--514, 1994.
|
| |
19
|
|
| |
20
|
|
| |
21
|
|
| |
22
|
R. Glück, A. V. Klimov. Metasystem transition schemes in computer science and mathematics. World Futures: the Journal of General Evolution, 45:213--243, 1995.
|
| |
23
|
|
| |
24
|
C. K. Gomard, N. D. Jones. Compiler generation by partial evaluation: a case study. Structured Programming, 12:123--144, 1991.
|
| |
25
|
C. K. Gomard, N. D. Jones. A partial evaluator for the untyped lambda calculus. Journal of Functional Programming, 1(1):21--69, 1991.
|
| |
26
|
C. K. Holst. Language triplets: the Amix approach. In D. Bjørner, A. P. Ershov, N. D. Jones (eds.), Partial Evaluation and Mixed Computation, 167--185. North--Holland, 1988.
|
| |
27
|
C. K. Holst, J. Launchbury. Handwriting cogen to avoid problems with static typing. In Fourth Annual Glasgow Workshop on Functional Programming. Draft Proceedings, 210--218, 1991.
|
| |
28
|
|
| |
29
|
|
| |
30
|
N. D. Jones, P. Sestoft, H. Søndergaard. Mix: a self-applicable partial evaluator for experiments in compiler generation. Lisp and Symbolic Computation, 2(1):9--50, 1989.
|
 |
31
|
|
 |
32
|
|
| |
33
|
A. V. Klimov, S. A. Romanenko. Metavychislitel' dlja jazyka Refal. Osnovnye ponjatija i primery. (A metaevaluator for the language Refal. Basic concepts and examples). Preprint 71, Keldysh Institute of Applied Mathematics, Academy of Sciences of the USSR, Moscow, 1987. (in Russian).
|
| |
34
|
O. Lecarme, M.-C. Peyrolle-Thomas. Self-compiling compilers: an appraisal of their implementation and portability. Software -- Practice and Experience, 8:149--170, 1978.
|
| |
35
|
M. Leuschel. The Ecce partial deduction system. In G. Puebla et al. (eds.), Proceedings of the ILPS'97 Workshop on Tools and Environments for (Constraint) Logic Programming, Technical Report CLIP7/97.1. Polytechnic University of Madrid, Spain, 1997.
|
| |
36
|
M. Leuschel, J. Jørgensen. Efficient specialisation in Prolog using a hand-written compiler generator LOGEN. Electronic Notes in Theoretical Computer Science, 30(2):157--162, 2000.
|
 |
37
|
|
| |
38
|
T. Æ. Mogensen, A. Bondorf. Logimix: a self-applicable partial evaluator for Prolog. In K.-K. Lau, T. Clement (eds.), Logic Program Synthesis and Transformation, Workshops in Computing, 214--227. Springer-Verlag, 1993.
|
| |
39
|
S. A. Romanenko. The specializer Unmix, 1990. Program and documentation available from ftp://ftp.diku.dk/pub/diku/dists/jones-book/Romanenko/.
|
| |
40
|
M. H. Sørensen, R. Glück, N. D. Jones. A positive supercompiler. Journal of Functional Programming, 6(6):811--838, 1996.
|
 |
41
|
|
| |
42
|
W. Taha. A gentle introduction to multi-stage programming. In C. Lengauer, D. Batory, C. Consel, M. Odersky (eds.), Domain-specific program generation. Proceedings, Vol. 3016, 30--50. Springer-Verlag, 2004.
|
| |
43
|
|
 |
44
|
|
| |
45
|
P. Thiemann. The PGG system: User manual, 2003. Program and documentation available from http://www.informatik.uni-freiburg.de/proglang/software/pgg/.
|
 |
46
|
|
 |
47
|
|
| |
48
|
|
| |
49
|
V. F. Turchin, And. V. Klimov, Ark. V. Klimov, V. F. Khoroshevsky, A. G.Krasovsky, S. A. Romanenko, I. B. Shchenkov, E. V. Travkina. Bazisnyj Refal i ego realizacija na vychislitel'nykh mashinakh (Basic Refal and its implementation on computers). GOSSTROJ SSSR, CNIPIASS, 1977. (in Russian).
|
|