Compiling language definitions

ACM Transactions on Programming Languages and Systems - Tập 24 Số 4 - Trang 334-368 - 2002
Mark van den Brand1, Jan Heering2, Paul Klint3, P.A.S. Olivier2
1CWI and Vrije Universiteit, Amsterdam, The Netherlands
2CWI Amsterdam, The Netherlands
3CWI and University of Amsterdam, Amsterdam, The Netherlands

Tóm tắt

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.

Từ khóa


Tài liệu tham khảo

Allen J. R., Anatomy of Lisp

Appel A. W., Compiling with Continuations, 10.1017/CBO9780511609619

Appel A. W. and Gonçalves M. J. R. 1993. Hash-consing garbage collection. Technical report CS-TR-412-93 Princeton University ]] Appel A. W. and Gonçalves M. J. R. 1993. Hash-consing garbage collection. Technical report CS-TR-412-93 Princeton University ]]

10.1145/293677.293679

Benanav D., Rewriting Techniques and Applications (RTA '85), 202

Bergstra J. A., 1989, Eds

10.1016/S0167-6423(97)00021-X

Bergstra J. A., Syntax and semantics of a high-level intermediate representation of ASF+SDF. Technical report SEN-R0030

10.1145/173262.155109

Brunekreef J. J., Logic Program Synthesis and Transformation (LOPSTR '96)

Clavel M., 1999, Maude: Specification and programming in rewriting logic---Maude system documentation. Technical report, SRI International

Courcelle B., 1982, Attribute grammars and recursive program schemes I and II, Theoret. Comput. Sci., 17, 163, 10.1016/0304-3975(82)90003-2

Dershowitz N., 1990, -P

de Jonge M., A pretty-printer for every occassion. Technical report SEN-R0115

Didrich K., 1994, Opal: Design and implementation of an algebraic programming language. In International Conference on Programming Languages and System Architectures

10.1155/2000/494281

Field A. J. and Harrison P. G. 1988. Functional Programming. Addison-Wesley Reading MA.]] Field A. J. and Harrison P. G. 1988. Functional Programming. Addison-Wesley Reading MA.]]

Field J., 1992, Proc. ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation

10.1145/291889.291903

Groote J. F., 1995, Proceedings of the Tenth Annual Conference on Computer Assurance (COMPASS '95)

Hartel P. H., 1996, Benchmarking implementations of functional languages with "Pseudoknot," a float-intensive benchmark, J. Funct. Program., 6, 621, 10.1017/S0956796800001891

10.1145/71605.71607

10.1145/322290.322295

Jones R., 1996, Garbage Collection: Algorithms for Automatic Dynamic Memory Management

Kaplan S., Rewriting Techniques and Applications (RTA '87)

Kirchner H., 2001, Promoting rewriting to a programming language: A compiler for non-deterministic rewrite programs in associative-commutative theories, J. Funct. Program., 11, 207, 10.1017/S0956796800003907

10.1145/151257.151260

Klop J. W., Handbook of Logic in Computer Science

Moonen L., Proceedings of the Second International Workshop on the Theory and Practice of Algebraic Specifications (ASF+SDF '97)

Muchnick S. S., Advanced Compiler Design and Implementation. Morgan Kaufmann

Nedjah N., Algebraic and Logic Programming (ALP '97/HOA '97), 1298

Olivier P. A. 2002. Benchmarking of functional/algebraic language implementations. Available online at http://www.cwi.nl/∼olivierp/benchmark/.]] Olivier P. A. 2002. Benchmarking of functional/algebraic language implementations. Available online at http://www.cwi.nl/∼olivierp/benchmark/.]]

Peyton Jones S. L., Programming Languages and Systems (ESOP '96)

Peyton Jones S. L., Proceedings of Joint Framework for Information Technology Technical Conference (JFIT), Keele, England). DTI/SERC

Peyton Jones S. L., 1998, C--: A portable assembly language. In Implementation of Functional Languages (IFL '97)

Plasmeijer M. J., Department of Computer Science

Rutten E. P. B. M. and Thiébaux S. 1992. Semantics of Manifold: Specification in ASF+SDF and extension. Technical report CS-R9269 Centrum voor Wiskunde en Informatica (CWI) Amsterdam The Netherlands.]] Rutten E. P. B. M. and Thiébaux S. 1992. Semantics of Manifold: Specification in ASF+SDF and extension. Technical report CS-R9269 Centrum voor Wiskunde en Informatica (CWI) Amsterdam The Netherlands.]]

Sellink M. P. A., Fouth European Conference on Software Maintenance and Reengineering, J. Ebert and C. Verhoef, Eds. IEEE Computer Society

Smetsers S., Functional Programming and Computer Architecture (FPCA '91), 524

Terashima M., 1990, HLisp---Its concept, implementation and applications, J. Inform. Process., 13, 265

10.1145/366378.366379

10.1002/(SICI)1097-024X(200003)30:3%3C259::AID-SPE298%3E3.0.CO;2-Y

van den Brand M. G. J., 1995, Technical Report P9504. Programming Research Group

van den Brand M. G. J., Compiler Construction (CC '99), 1575

10.1016/S0167-6423(99)00037-4

van den Brand M. G. J., Ed. Lecture Notes in Computer Science, 2027

van der Meulen E. A., Language Prototyping: An Algebraic Specification Approach

van Deursen A., 1996, Eds

10.1002/(SICI)1096-908X(199803/04)10:2%3C75::AID-SMR168%3E3.0.CO;2-5

van Deursen A., Ed. Lecture Notes in Computer Science, 1577

van Deursen A., Proceedings of the Seventh Working Conference on Reverse Engineering. IEEE Computer Society Press

van Roy P., 1993, The wonder years of sequential Prolog implementation, J. Logic Program., 19, 385