ACM Home Page
Please provide us with feedback. Feedback
Digital Library logoTake a look at the new version of this page: [ beta version ]. Tell us what you think.
Compiling language definitions: the ASF+SDF compiler
Full text PdfPdf (371 KB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 24 ,  Issue 4  (July 2002) table of contents
Pages: 334 - 368  
Year of Publication: 2002
ISSN:0164-0925
Authors
Mark G. J. van den Brand  CWI and Vrije Universiteit, Amsterdam, The Netherlands
J. Heering  CWI, Amsterdam, The Netherlands
P. Klint  CWI and University of Amsterdam, Amsterdam, The Netherlands
P. A. Olivier  CWI, Amsterdam, The Netherlands
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 0,   Downloads (12 Months): 73,   Citation Count: 35
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/567097.567099
What is a DOI?

ABSTRACT

The ASF+SDF Meta-Environment is an interactive language development environment whose main application areas are definition and implementation of domain-specific languages, generation of program analysis and transformation tools, and production of software renovation tools. It uses conditional rewrite rules to define the dynamic semantics and other tool-oriented aspects of languages, so the effectiveness of the generated tools is critically dependent on the quality of the rewrite rule implementation. The ASF+SDF rewrite rule compiler generates C code, thus taking advantage of C's portability and the sophisticated optimization capabilities of current C compilers as well as avoiding potential abstract machine interface bottlenecks. It can handle large (10,000+ rule) language definitions and uses an efficient run-time storage scheme capable of handling large (1,000,000+ node) terms. Term storage uses maximal subterm sharing (hash-consing), which turns out to be more effective in the case of ASF+SDF than in Lisp or SML. Extensive benchmarking has shown the time and space performance of the generated code to be as good as or better than that of the best current rewrite rule and functional language compilers.


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
 
3
Appel, A. W. and Gonçalves, M. J. R. 1993. Hash-consing garbage collection. Technical report CS-TR-412-93, Princeton University,
4
 
5
6
 
7
 
8
9
 
10
 
11
Clavel, M., Durán, F., Eker, S., Lincoln, P., Marti-Oliet, N., Meseguer, J., and Quesada, J. 1999. Maude: Specification and programming in rewriting logic---Maude system documentation. Technical report, SRI International, Menlo Park, CA.
 
12
Courcelle, B. and Franchi-Zannettacci, P. 1982. Attribute grammars and recursive program schemes I and II. Theoret. Comput. Sci. 17, 163--191 and 235--257.
 
13
 
14
 
15
 
16
Dik, C. H. S. 1989. A fast implementation of the Algebraic Specification Formalism. M.S. thesis, Programming Research Group, University of Amsterdam, Amsterdam, The Netherlands.
 
17
Dinesh, T. B., Haveraaen, M., and Heering, J. 2001. An algebraic programming style for numerical software and its optimization. Sci. Program. 8, 4 (Sept./Oct.), 247--259. Special issue on Coordinate-Free Numerics.
 
18
Field, A. J. and Harrison, P. G. 1988. Functional Programming. Addison-Wesley, Reading, MA.
 
19
Field, J. 1992. A simple rewriting semantics for realistic imperative programs and its application to program analysis. In Proc. ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation (San Francisco, CA). ACM Press, New York, NY, 98--107. Also published as Technical report YALEU/DCS/RR--909, Yale University, New Haven, CT.
20
 
21
Franz, M. 1994. Code-generation on-the-fly: A key to portable software. Ph.D. thesis, ETH Zurich, Zurich, Switzerland. Available online at ftp://ftp.inf.ethz.ch/pub/publications/dissertations/th10497.ps.
 
22
Groote, J. F., Koorn, J. W. C., and van Vlijmen, S. F. M. 1995. The safety guaranteeing system at station Hoorn-Kersenboogaard. In Proceedings of the Tenth Annual Conference on Computer Assurance (COMPASS '95). IEEE, Computer Society Press, Los Alamitos, CA, 57--68.
 
23
Hartel, P. H. et al. 1996. Benchmarking implementations of functional languages with "Pseudoknot," a float-intensive benchmark. J. Funct. Program. 6, 621--655.
24
 
25
Hendriks, P. R. H. 1991. Implementation of modular algebraic specifications. Ph.D. thesis, University of Amsterdam, Amsterdam, The Netherlands.
 
26
Hillebrand, J. A. 1996. Experiments in specification re-engineering. Ph.D. thesis, University of Amsterdam, Amsterdam, The Netherlands.
27
 
28
 
29
Kamperman, J. F. Th. 1996. Compilation of term rewriting systems. Ph.D. thesis, University of Amsterdam, Amsterdam, The Netherlands.
 
30
 
31
32
 
33
 
34
Moonen, L. 1997. A generic architecture for data flow analysis to support reverse engineering. In Proceedings of the Second International Workshop on the Theory and Practice of Algebraic Specifications (ASF+SDF '97), M. P. A. Sellink, Ed. Electronic Workshops in Computing. Springer/British Computer Society, London, UK.
 
35
 
36
 
37
Olivier, P. A. 2002. Benchmarking of functional/algebraic language implementations. Available online at http://www.cwi.nl/∼olivierp/benchmark/.
 
38
 
39
Peyton Jones, S. L., Hall, C. V., Hammond, K., Partain, W. D., and Wadler, P. L. 1993. The Glasgow Haskell compiler: A technical overview. In Proceedings of Joint Framework for Information Technology Technical Conference (JFIT), Keele, England). DTI/SERC, London, U.K., 249--257.
 
40
 
41
Plasmeijer, M. J. and van Eekelen, M. C. J. D. 1994. Concurrent CLEAN---version 1.0---Language refence manual. Technical report draft, Department of Computer Science, University of Nijmegen, Nijmegen, The Netherlands.
 
42
 
43
 
44
 
45
46
 
47
 
48
van den Brand, M. G. J., Eijkelkamp, S. M., Geluk, D. K. A., Meijer, Osborne, H. R., and Polling, M. J. F. 1995. Program transformations using ASF+SDF. In Proceedings of ASF+SDF '95. Technical Report P9504. Programming Research Group, University of Amsterdam, Amsterdam, The Netherlands, 29--52.
 
49
 
50
 
51
 
52
van der Meulen, E. A. 1996. Incremental typechecking. In Language Prototyping: An Algebraic Specification Approach, A. van Deursen, J. Heering, and P. Klint, Eds. AMAST Series in Computing, vol. 5. World Scientific, Singapore, 199--248.
 
53
van Deursen, A. 1994. Executable language definitions: Case studies and origin tracking techniques. Ph.D. thesis, University of Amsterdam, Amsterdam, The Netherlands.
 
54
van Deursen, A., Heering, J., and Klint, P., Eds. 1996. Language Prototyping. AMAST Series in Computing, vol. 5. World Scientific, Singapore.
 
55
 
56
 
57
 
58
van Roy, P. 1993. The wonder years of sequential Prolog implementation. J. Logic Program. 19/20, 385--441.
 
59
Vinju, J. J. 1999. Optimizations of list matching in the ASF+SDF compiler. M.S. thesis, Programming Research Group, University of Amsterdam, Amsterdam, The Netherlands. Available online at http://www.cwi.nl/∼jurgenv/.
 
60
Visser, E. 1997. Syntax definition for language prototyping. Ph.D. thesis, University of Amsterdam, Amesterdam, The Netherlands. Available online at http://www.cs.uu. nl/∼visser/publications/ftp/Vis97.thesis.ps.gz.

CITED BY  35

Collaborative Colleagues:
Mark G. J. van den Brand: colleagues
J. Heering: colleagues
P. Klint: colleagues
P. A. Olivier: colleagues