Compiling language definitions
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. 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 ]]
Benanav D., Rewriting Techniques and Applications (RTA '85), 202
Bergstra J. A., 1989, Eds
Bergstra J. A., Syntax and semantics of a high-level intermediate representation of ASF+SDF. Technical report SEN-R0030
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
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
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
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
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
van den Brand M. G. J., 1995, Technical Report P9504. Programming Research Group
van den Brand M. G. J., Compiler Construction (CC '99), 1575
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
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