Abstract
Domain-specific languages (DSLs) are languages tailored to a specific application domain. They offer substantial gains in expressiveness and ease of use compared with general-purpose programming languages in their domain of application. DSL development is hard, requiring both domain knowledge and language development expertise. Few people have both. Not surprisingly, the decision to develop a DSL is often postponed indefinitely, if considered at all, and most DSLs never get beyond the application library stage.Although many articles have been written on the development of particular DSLs, there is very limited literature on DSL development methodologies and many questions remain regarding when and how to develop a DSL. To aid the DSL developer, we identify patterns in the decision, analysis, design, and implementation phases of DSL development. Our patterns improve and extend earlier work on DSL design patterns. We also discuss domain analysis tools and language development systems that may help to speed up DSL development. Finally, we present a number of open problems.
- Anlauff, M., Kutter, P. W., and Pierantonio, A. 1999. Tool support for language design and prototyping with Montages. In Compiler Construction (CC'99), S. Jähnichen, Ed. Lecture Notes in Computer Science, vol. 1575. Springer-Verlag, 296--299.]] Google Scholar
- Antoniotti, M. and Göllü, A. 1997. SHIFT and SMART-AHS: A language for hybrid system engineering modeling and simulation. In Proceedings of the USENIX Conference on Domain-Specific Languages, 171--182.]] Google Scholar
- Atkins, D., Ball, T., Bruns, G., and Cox, K. 1999. Mawl: A domain-specific language for form-based services. IEEE Trans. Softw. Eng. 25, 3 (May/June), 334--346.]] Google Scholar
- Attali, I., Courbis, C., Degenne, P., Fau, A., Parigot, D., and Pasquier, C. 2001. SmartTools: A generator of interactive environments tools. In Compiler Construction: 10th International Conference (CC'01), R. Wilhelm, Ed. Lecture Notes in Computer Science, vol. 2027. Springer-Verlag, 355--360.]] Google Scholar
- Aycock, J. 2002. The design and implementation of SPARK, a toolkit for implementing domain-specific languages. J. Comput. Inform. Tech. 10, 1, 55--66.]]Google Scholar
- Backus, J. W. 1960. The syntax and semantics of the proposed International Algebraic Language of the Zurich ACM-GAMM conference. In Proceedings of the International Conference on Information Processing, UNESCO, Paris, 1959. Oldenbourg, Munich and Butterworth, London, 125--132.]]Google Scholar
- Badros, G. 2000. JavaML: A markup language for Java source code. In Proceedings of the 9th International World Wide Web Conference. http://www9.org/w9cdrom/start.html.]] Google Scholar
- Bagge, O. S. and Haveraaen, M. 2003. Domain-specific optimisation with user-defined rules in CodeBoost. In Proceedings of the 4th International Workshop on Rule-Based Programming (RULE'03), J.-L. Giavitto and P.-E. Moreau, Eds. Electronic Notes in Theoretical Computer Science, vol. 86(2). Elsevier. http://www.sciencedirect.com/.]]Google Scholar
- Barron, D. W. 2000. The World of Scripting Languages. John Wiley.]] Google Scholar
- Batory, D., Lofaso, B., and Smaragdakis, Y. 1998. JTS: Tools for implementing domain-specific languages. In Proceedings of the 5th International Conference on Software Reuse (JCSR'98), P. Devanbu and J. Poulin, Eds. IEEE Computer Society, 143--153.]] Google Scholar
- Batory, D., Thomas, J., and Sirkin, M. 1994. Reengineering a complex application using a scalable data structure compiler. In Proceedings of the ACM SIGSOFT International Symposium on the Foundations of Software Engineering. 111--120.]] Google Scholar
- Baxter, I. D., Pidgeon, C., and Mehlich, M. 2004. DMS: Program transformation for practical scalable software evolution. In Proceedings of the 26th International Conference on Software Engineering (ICSE'04). IEEE Computer Society, 625--634.]] Google Scholar
- Bennett, K. H. and Rajlich, V. T. 2000. Software maintenance and evolution: A roadmap. In The Future of Software Engineering, A. Finkelstein, Ed. ACM Press, 73--87.]] Google Scholar
- Bentley, J. L. 1986. Programming pearls: Little languages. Comm. ACM 29, 8 (August), 711--721.]] Google Scholar
- Bergin, T. J. and Gibson, R. G., Eds. 1996. History of Programming Languages II. ACM Press.]] Google Scholar
- Bertrand, F. and Augeraud, M. 1999. BDL: A specialized language for per-object reactive control. IEEE Trans. Softw. Eng. 25, 3, 347--362.]] Google Scholar
- Biggerstaff, T. J. 1998. A perspective of generative reuse. Annals Softw. Eng. 5, 169--226.]] Google Scholar
- Biggerstaff, T. J. and Perlis, A. J., Eds. 1989. Software Reusability. ACM Press/Addison-Wesley. Vol. I: Concepts and Models, Vol. II: Applications and Experience.]] Google Scholar
- Bonachea, D., Fisher, K., Rogers, A., and Smith, F. 1999. Hancock: A language for processing very large-scale data. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages, 163--176.]] Google Scholar
- Bosch, J. and Dittrich, Y. Domain-specific languages for a changing world. http://www.cs.rug.nl/bosch/articles.html.]]Google Scholar
- Braband, C. and Schwartzbach, M. 2002. Growing languages with metamorphic syntax macros. ACM SIGPLAN Notices 37, 3 (March), 31--40.]] Google Scholar
- Braband, C., Schwartzbach, M. I., and Vanggaard, M. 2003. The metafront system: Extensible parsing and transformation. In Proceedings of the 3rd Workshop on Language Descriptions, Tools, and Applications (LDTA'03), B. R. Bryant and J. Saraiva, Eds. Electronic Notes in Theoretical Computer Science, vol. 82(3). Elsevier. http://www.sciencedirect.com/.]]Google Scholar
- Bravenboer, M. and Visser, E. 2004. Concrete syntax for objects: Domain-specific language embedding and assimilation without restrictions. In Proceedings of the 19th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'04), D. C. Schmidt, Ed. ACM, 365--383.]] Google Scholar
- Brooks, Jr., F. P. 1996. Language design as design. In History of Programming Languages II. T. J. Bergin and R. C. Gibson Eds. ACM Press, 4--15.]] Google Scholar
- Bruntink, M., van Deursen, A., and Tourwé, T. 2005. Isolating idiomatic crosscutting concerns. In Proceedings of the International Conference on Software Maintenance (ICSM'05). IEEE Computer Society, 37--46.]] Google Scholar
- Buffenbarger, J. and Gruell, K. 2001. A language for software subsystem composition. In IEEE Proceedings of the 34th Hawaii International Conference on System Sciences.]] Google Scholar
- Cardelli, L. and Davies, R. 1999. Service combinators for web computing. IEEE Trans. Softw. Eng. 25, 3 (May/June), 309--316.]] Google Scholar
- Chandra, S., Richards, B., and Larus, J. R. 1999. Teapot: A domain-specific language for writing cache coherence protocols. IEEE Trans. Softw. Eng. 25, 3 (May/June), 317--333.]] Google Scholar
- Chappell, D. 1996. Understanding ActiveX and OLE. Microsoft Press.]] Google Scholar
- Chiba, S. 1995. A metaobject protocol for C++. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'95). ACM, 285--299.]] Google Scholar
- Cleaveland, J. C. 1988. Building application generators. IEEE Softw. 5, 4, 25--33.]] Google Scholar
- Cleaveland, J. C. 2001. Program Generators Using Java and XML. Prentice-Hall.]] Google Scholar
- Clements, J., Felleisen, M., Findler, R., Flatt, M., and Krishnamurthi, S. 2004. Fostering little languages. Dr. Dobb's J. 29, 3 (March), 16--24.]]Google Scholar
- Consel, C. and Marlet, R. 1998. Architecturing software using a methodology for language development. In Principles of Declarative Programming (PLILP'98/ALP'98), C. Palamidessi, H. Glaser, and K. Meinke, Eds. Lecture Notes in Computer Science, vol. 1490. Springer-Verlag, 170--194.]] Google Scholar
- Coplien, J., Hoffman, D., and Weiss, D. 1998. Commonality and variability in software engineering. IEEE Softw. 15, 6, 37--45.]] Google Scholar
- Cordy, J. R. 2004. TXL---A language for programming language tools and applications. In Proceedings of the 4th Workshop on Language Descriptions, Tools, and Applications (LDTA'04), G. Hedin and E. van Wyk, Eds. Electronic Notes in Theoretical Computer Science, vol. 110. Elsevier, 3--31. http://www.sciencedirect.com/.]]Google Scholar
- Courbis, C. and Finkelstein, A. 2004. Towards an aspect weaving BPEL engine. In Proceedings of the 3rd AOSD Workshop on Aspects, Components, and Patterns for Infrastructure Software (ACP4IS), Y. Coady and D. H. Lorenz, Eds. Tech. rep. NU-CCIS-04-04, College of Computer and Information Science, Northeastern University, Boston, MA.]]Google Scholar
- Črepinšek, M., Mernik, M., Javed, F., Bryant, B. R., and Sprague, A. 2005. Extracting grammar from programs: evolutionary approach. ACM SIGPLAN Notices 40, 4 (April), 39--46.]] Google Scholar
- Crespi-Reghizzi, S., Melkanoff, M. A., and Lichten, L. 1973. The use of grammatical inference for designing programming languages. Comm. ACM 16, 83--90.]] Google Scholar
- Crew, R. F. 1997. ASTLOG: A language for examining abstract syntax trees. In Proceedings of the USENIX Conference on Domain-Specific Languages, 229--242.]] Google Scholar
- Czarnecki, K. and Eisenecker, U. 2000. Generative Programming: Methods, Techniques and Applications. Addison-Wesley.]] Google Scholar
- de Jonge, M. 2002. Source tree composition. In Software Reuse: Methods, Techniques, and Tools: 7th International Conference (ICSR-7), C. Gacek, Ed. Lecture Notes in Computer Science, vol. 2319. Springer-Verlag, 17--32.]] Google Scholar
- Dean, M., Schreiber, G., van Harmelen, F., Hendler, J., Horrocks, I., McGuinness, D. L., Patel-Schneider, P. F., and Stein, L. A. 2003. OWL Web Ontology Language Reference. Working draft, W3C (March). http://www.w3.org/TR/2003/WD-owl-ref-20030331/.]]Google Scholar
- Denny, M. 2003. Ontology building: A survey of editing tools. Tech. rep., XML.com. http://www.xml.com/lpt/a/2002/11/06/ontologies.html.]]Google Scholar
- Elliott, C. 1999. An embedded modeling language approach to interactive 3D and multimedia animation. IEEE Trans. Softw. Eng. 25, 3 (May/June), 291--308.]] Google Scholar
- Faith, R. E., Nyland, L. S., and Prins, J. F. 1997. Khepera: A system for rapid implementation of domain specific languages. In Proceedings of the USENIX Conference on Domain-Specific Languages, 243--255.]] Google Scholar
- Falbo, R. A., Guizzardi, G., and Duarte, K. C. 2002. An ontological approach to domain engineering. In Proceedings of the 14th International Conference on Software Engineering and Knowledge Engineering (SEKE'02). ACM, 351--358.]] Google Scholar
- Felleisen, M., Findler, R., Flatt, M., and Krishnamurthi, S. 2004. Building little languages with macros. Dr. Dobb's J. 29, 4 (April), 45--49.]]Google Scholar
- Fertalj, K., Kalpič, D., and Mornar, V. 2002. Source code generator based on a proprietary specification language. In Proceedings of the 35th Hawaii International Conference on System Sciences.]] Google Scholar
- Frakes, W. 1998. Panel: Linking domain analysis with domain implementation. In Proceedings of the 5th International Conference on Software Reuse. IEEE Computer Society, 348--349.]] Google Scholar
- Frakes, W., Prieto-Diaz, R., and Fox, C. 1998. DARE: Domain analysis and reuse environment. Annals of Software Engineering 5, 125--141.]] Google Scholar
- Gamma, E., Helm, R., Johnson, R., and Vlissides, J. 1995. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.]] Google Scholar
- Germon, R. 2001. Using XML as an intermediate form for compiler development. In XML Conference Proceedings. http://www.idealliance.org/papers/xml2001/index.html.]]Google Scholar
- Gil, J. and Tsoglin, Y. 2001. JAMOOS---A domain-specific language for language processing. J. Comput. Inform. Tech. 9, 4, 305--321.]]Google Scholar
- Gilmore, S. and Ryan, M., Eds. 2001. Language Constructs for Describing Features---Proceedings of the FIREworks Workshop. Springer-Verlag.]]Google Scholar
- Glässer, U., Gurevich, Y., and Veanes, M. 2002. An abstract communication model. Tech. rep. MSR-TR-2002-55. Microsoft Research, Redmond, WA.]]Google Scholar
- Gondow, K. and Kawashima, H. 2002. Towards ANSI C program slicing using XML. In Proceedings of the 2nd Workshop on Language Descriptions, Tools, and Applications (LDTA'02), M. G. J. van den Brand and R. Lämmel, Eds. Electronic Notes in Theoretical Computer Science, vol. 65(3). Elsevier. http://www.sciencedirect.com/.]]Google Scholar
- Gough, J. 2002. Compiling for the .NET Common Language Runtime (CLR). Prentice Hall.]] Google Scholar
- Granicz, A. and Hickey, J. 2003. Phobos: Extending compilers with executable language definitions. In Proceedings of the 36th Hawaii International Conference on System Sciences.]]Google Scholar
- Gray, J. and Karsai, G. 2003. An examination of DSLs for concisely representing model traversals and transformations. In Proceedings of the 36th Hawaii International Conference on System Sciences.]] Google Scholar
- Gray, R. W., Levi, S. P., Heuring, V. P., Sloane, A. M., and Waite, W. M. 1992. Eli: A complete, flexible compiler construction system. Comm. ACM 35, 2 (Feb.), 121--130.]] Google Scholar
- Greenfield, J., Short, K., Cook, S., Kent, S., and Crupi, J. 2004. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. John Wiley.]] Google Scholar
- Guyer, S. Z. and Lin, C. 1999. An annotation language for optimizing software libraries. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages, 39--52.]] Google Scholar
- Guyer, S. Z. and Lin, C. 2005. Broadway: A compiler for exploiting the domain-specific semantics of software libraries. In Proceedings of IEEE, 93, 2, 342--357.]]Google Scholar
- Heering, J. and Klint, P. 2000. Semantics of programming languages: A tool-oriented approach. ACM SIGPLAN Notices 35, 3 (March) 39--48.]] Google Scholar
- Herndon, R. M. and Berzins, V. A. 1988. The realizable benefits of a language prototyping language. IEEE Trans. Softw. Eng. 14, 803--809.]] Google Scholar
- HICSS 2001. Proceedings of the 34th Hawaii International Conference on System Sciences (HICSS'34). IEEE.]]Google Scholar
- HICSS 2002. Proceedings of the 35th Hawaii International Conference on System Sciences (HICSS'35). IEEE.]]Google Scholar
- HICSS 2003. Proceedings of the 36th Hawaii International Conference on System Sciences (HICSS'36). IEEE.]]Google Scholar
- Hudak, P. 1996. Building domain-specific embedded languages. ACM Comput. Surv. 28, 4 (Dec).]] Google Scholar
- Hudak, P. 1998. Modular domain specific languages and tools. In Proceedings of the 5th International Conference on Software Reuse (JCSR'98), P. Devanbu and J. Poulin, Eds. IEEE Computer Society, 134--142.]] Google Scholar
- Jennings, J. and Beuscher, E. 1999. Verischemelog: Verilog embedded in Scheme. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages. 123--134.]] Google Scholar
- Jones, C. 1996. SPR Programming Languages Table Release 8.2, http://www.theadvisors.com/langcomparison.htm. (Accessed April 2005). Later release not available at publication.]]Google Scholar
- Jones, N. D., Gomard, C. K., and Sestoft, P. 1993. Partial Evaluation and Automatic Program Generation. Prentice Hall.]] Google Scholar
- Kadhim, B. M. and Waite, W. M. 1996. Maptool---Supporting modular syntax development. In Compiler Construction (CC'96), T. Gyimóthy, Ed. Lecture Notes in Computer Science, vol. 1060. Springer-Verlag, 268--280.]] Google Scholar
- Kamin, S., Ed. 1997. DSL'97---1st ACM SIGPLAN Workshop on Domain-Specific Languages in Association with POPL'97. University of Illinois Computer Science Report.]]Google Scholar
- Kamin, S. 1998. Research on domain-specific embedded languages and program generators. Electro. Notes Theor. Comput. Sci. 14. http://www.sciencedirect.com/.]]Google Scholar
- Kamin, S. and Hyatt, D. 1997. A special-purpose language for picture-drawing. In Proceedings of the USENIX Conference on Domain-Specific Languages, 297--310.]] Google Scholar
- Kang, K. C., Cohen, S. G., Hess, J. A., Novak, W. E., and Peterson, A. S. 1990. Feature-oriented domain analysis (FODA) feasibility study. Tech. rep. CMU/SEI-90-TR-21. Software Engineering Institute, Carnegie Mellon University.]]Google Scholar
- Kastens, U. and Pfahler, P. 1998. Compositional design and implementation of domain-specific languages. In IFIP TC2 WG 2.4 Working Conference on System Implementation 2000: Languages, Methods and Tools, R. N. Horspool, Ed. Chapman and Hall, 152--165.]] Google Scholar
- Kiczales, G., des Rivieres, J., and Bobrow, D. G. 1991. The Art of the Metaobject Protocol. MIT Press.]] Google Scholar
- Kieburtz, R. B., McKinney, L., Bell, J. M., Hook, J., Kotov, A., Lewis, J., Oliva, D. P., Sheard, T., Smith, I., and Walton, L. 1996. A software engineering experiment in software component generation. In Proceedings of the 18th International Conference on Software Engineering (ICSE'96). IEEE, 542--552.]] Google Scholar
- Kienle, H. M. and Moore, D. L. 2002. smgn: Rapid prototyping of small domain-specific languages. J. Comput. Inform. Tech. 10, 1, 37--53.]]Google Scholar
- Klarlund, N. and Schwartzbach, M. 1999. A domain-specific language for regular sets of strings and trees. IEEE Trans. Softw. Eng. 25, 3 (May/June), 378--386.]] Google Scholar
- Krueger, C. W. 1992. Software reuse. ACM Computing Surveys 24, 2 (June), 131--183.]] Google Scholar
- Kuck, D. J. 2005. Platform 2015 software: Enabling innovation in parallelism for the next decade. Technology@Intel Magazine. http://www.intel.com/technology/magazine/computing/Parallelism-0405.htm.]]Google Scholar
- Kumar, S., Mandelbaum, Y., Yu, X., and Li, K. 2001. ESP: A language for programmable devices. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'01). ACM, 309--320.]] Google Scholar
- Kutter, P. W., Schweizer, D., and Thiele, L. 1998. Integrating domain specific language design in the software life cycle. In Applied Formal Methods---FM-Trends 98, D. Hutter et al., Eds. Lecture Notes in Computer Science, vol. 1641. Springer-Verlag, 196--212.]] Google Scholar
- Launchbury, J., Lewis, J. R., and Cook, B. 1999. On embedding a microarchitectural design language within Haskell. ACM SIGPLAN Notices 34, 9 (Sept.), 60--69.]] Google Scholar
- Lengauer, C., Batory, D., Consel, C., and Odersky, M., Eds. 2004. Domain-Specific Program Generation. Lecture Notes in Computer Science, vol. 3016. Springer-Verlag.]]Google Scholar
- Levy, M. R. 1998. Web programming in Guide. Softw. Pract. Exper. 28, 1581--1603.]] Google Scholar
- Martin, J. 1985. Fourth-Generation Languages. Vol. I: Principles, Vol II: Representative 4GLs. Prentice-Hall.]] Google Scholar
- Mauw, S., Wiersma, W., and Willemse, T. 2004. Language-driven system design. Int. J. Softw. Eng. Knowl. Eng. 14, 1--39.]]Google Scholar
- Mernik, M. and Lämmel, R. 2001. Special issue on domain-specific languages, Part I. J. Comput. Inform. Techn. 9, 4.]]Google Scholar
- Mernik, M. and Lämmel, R. 2002. Special issue on domain-specific languages, Part II. J. Comput. Inform. Techn. 10, 1.]]Google Scholar
- Mernik, M., Lenič, M., Avdičaušević, E., and Žumer, V. 2000. Multiple attribute grammar inheritance. Informatica 24, 3 (Sept.), 319--328.]]Google Scholar
- Mernik, M., Novak, U., Avdičaušević, E., Lenič, M., and Žumer, V. 2001. Design and implementation of simple object description language. In Proceedings of the 2001 ACM Symposium on Applied Computing (SAC'01). ACM, 590--594.]] Google Scholar
- Mernik, M., Žumer, V., Lenič, M., and Avdičaušević, E. 1999. Implementation of multiple attribute grammar inheritance in the tool LISA. ACM SIGPLAN Notices 34, 6 (June), 68--75.]] Google Scholar
- Moura, J. M. F., Püschel, M., Padua, D., and Dongarra, J. 2005. Special issue on program generation, optimization, and platform adaptation. Proceedings of the IEEE 93, 2.]]Google Scholar
- Nakatani, L. and Jones, M. 1997. Jargons and infocentrism. 1st Acm SIGPLAN Workshop on Domain-Specific Languages. 59--74. http://www-sal.cs.uiuc.edu/kamin/dsl/papers/nakatani.ps.]]Google Scholar
- Nardi, B. A. 1993. A Small Matter of Programming: Perspectives on End User Computing. MIT Press.]] Google Scholar
- Neighbors, J. M. 1984. The Draco approach to constructing software from reusable components. IEEE Trans. Softw. Eng. SE-10, 5 (Sept.), 564--574.]]Google Scholar
- Parigot, D. 2004. Towards domain-driven development: The SmartTools software factory. In Companion to the 19th Annual ACM SIGPLAN Conference on Object-oriented Programming Systems, Languages, and Applications. ACM, 37--38.]] Google Scholar
- Peyton Jones, S., Tolmach, A., and Hoare, T. 2001. Playing by the rules: Rewriting as a practical optimisation technique in GHC. In Proceedings of the Haskell Workshop.]]Google Scholar
- Pfahler, P. and Kastens, U. 2001. Configuring component-based specifications for domain-specific languages. In Proceedings of the 34th Hawaii International Conference on System Sciences.]] Google Scholar
- Raymond, E. S. 2001. The CML2 language: Python implementation of a constraint-based interactive configurator. In Proceeding of the 9th International Python Conference. 135--142. http://www.catb.org/esr/cml2/cml2-paper.html.]]Google Scholar
- Risi, W., Martinez-Lopez, P., and Marcos, D. 2001. Hycom: A domain specific language for hypermedia application development. In Proceedings of the 34th Hawaii International Conference on System Sciences.]] Google Scholar
- Ross, D. T. 1981. Origins of the APT language for automatically programmed tools. History of Programming Languages, R. L. Wexelblat Ed. Academic Press. 279--338.]] Google Scholar
- Salus, P. H., Ed. 1998. Little Languages. Handbook of Programming Languages, vol. III. MacMillan.]] Google Scholar
- Sammet, J. E. 1969. Programming Languages: History and Fundamentals. Prentice-Hall.]] Google Scholar
- Saraiva, J. and Schneider, S. 2003. Embedding domain specific languages in the attribute grammar formalism. In Proceedings of the 36th Hawaii International Conference on System Sciences.]] Google Scholar
- Schnarr, E., Hill, M. D., and Larus, J. R. 2001. Facile: A language and compiler for high-performance processor simulators. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'01). ACM, 321--331.]] Google Scholar
- Schneider, K. A. and Cordy, J. R. 2002. AUI: A programming language for developing plastic interactive software. In Proceedings of the 35th Hawaii International Conference on System Sciences.]] Google Scholar
- Schupp, S., Gregor, D. P., Musser, D. R., and Liu, S. 2001. User-extensible simplification---Type-based optimizer generators. In Compiler Construction (CC'01), R. Wilhelm, Ed. Lecture Notes in Computer Science, vol. 2027. Springer-Verlag, 86--101.]] Google Scholar
- SDL Forum. 2000. MSC-2000: Interaction for the new millenium. http://www.sdl-forum.org/MSC2000present/index.htm.]]Google Scholar
- Simos, M. and Anthony, J. 1998. Weaving the model web: A multi-modeling approach to concepts and features in domain engineering. In Proceedings of the 5th International Conference on Software Reuse. IEEE Computer Society, 94--102.]] Google Scholar
- Sirer, E. G. and Bershad, B. N. 1999. Using production grammars in software testing. In Proceedings of the 2nd USENIX Conference on Domain-Specific Languages. 1--14.]] Google Scholar
- Sloane, A. M. 2002. Post-design domain-specific language embedding: A case study in the software engineering domain. In Proceedings of the 35th Hawaii International Conference on System Sciences.]] Google Scholar
- Slonneger, K. and Kurtz, B. L. 1995. Formal Syntax and Semantics of Programming Languages: A Laboratory Based Approach. Addison-Wesley.]] Google Scholar
- Smaragdakis, Y. and Batory, D. 1997. DiSTiL: A transformation library for data structures. In Proceedings of the USENIX Conference on Domain-Specific Languages. 257--270.]] Google Scholar
- Smaragdakis, Y. and Batory, D. 2000. Application generators. In Wiley Encyclopedia of Electrical and Electronics Engineering Online, J. Webster, Ed. John Wiley.]]Google Scholar
- Soroker, D., Karasick, M., Barton, J., and Streeter, D. 1997. Extension mechanisms in Montana. In Proceedings of the 8th Israeli Conference on Computer-Based Systems and Software Engineering (ICCSSE'97). IEEE Computer Society, 119--128.]] Google Scholar
- Spinellis, D. 2001. Notable design patterns for domain-specific languages. J. Syst. Softw. 56, 91--99.]] Google Scholar
- Sutcliffe, A. and Mehandjiev, N. 2004. Special issue on End-User Development. Comm. ACM 47, 9.]]Google Scholar
- Szyperski, C. 2002. Component Software---Beyond Object-Oriented Programming, 2nd Ed. Addison-Wesley/ACM Press.]] Google Scholar
- Taylor, R. N., Tracz, W., and Coglianese, L. 1995. Software development using domain-specific software architectures. ACM SIGSOFT Software Engineering Notes 20, 5, 27--37.]] Google Scholar
- Tennent, R. D. 1977. Language design methods based on semantic principles. Acta Inf. 8, 97--112.]]Google Scholar
- Thatte, S. 2001. XLANG: Web services for business process design. Tech. rep. Microsoft. http://www.gotdotnet.com/team/xml_wsspecs/xlang-c/.]]Google Scholar
- Thibault, S. A. 1998. Domain-specific languages: Conception, implementation and application. Ph.D. thesis, University of Rennes.]]Google Scholar
- Thibault, S. A., Consel, C., and Muller, G. 1998. Safe and efficient active network programming. In Proceedings of the 17th IEEE Symposium on Reliable Distributed Systems. IEEE Computer Society, 135--143.]] Google Scholar
- Thibault, S. A., Marlet, R., and Consel, C. 1999. Domain-specific languages: From design to implementation---Application to video device drivers generation. IEEE Trans. Softw. Eng. 25, 3, (May/June), 363--377.]] Google Scholar
- Tracz, W. and Coglianese, L. 1995. DOMAIN (DOmain Model All INtegrated)---a DSSA domain analysis tool. Tech. rep. ADAGE-LOR-94-11. Loral Federal Systems.]]Google Scholar
- UPnP 2003. Universal Plug and Play Forum. http://www.upnp.org/.]]Google Scholar
- USENIX 1997. Proceedings of the USENIX Conference on Domain-Specific Languages.]]Google Scholar
- USENIX 1999. Proceedings of the 2nd USENIX Conference on Domain-Specific Languages (DSL'99).]]Google Scholar
- van den Brand, M. G. J., van Deursen, A., Heering, J., de Jong, H. A., de Jonge, M., Kuipers, T., Klint, P., Moonen, L., Oliver, P. A., Scheerder, J., Vinju, J. J., Visser, E., and Visser, J. 2001. The ASF+SDF Meta-Environment: A component-based language development environment. In Compiler Construction (CC'01), R. Wilhelm, Ed. Lecture Notes in Computer Science, vol. 2027. Springer-Verlag, 365--370. http://www.cwi.nl/projects/MetaEnv.]] Google Scholar
- van den Brand, M. G. J. and Visser, E. 1996. Generation of formatters for context-free languages. ACM Trans. Softw. Eng. Method. 5, 1--41.]] Google Scholar
- van Deursen, A. and Klint, P. 1998. Little languages: Little maintenance? J. Softw. Maintenance 10, 75--92.]] Google Scholar
- van Deursen, A. and Klint, P. 2002. Domain-specific language design requires feature descriptions. J. Comput. Inform. Tech. 10, 1, 1--17.]]Google Scholar
- van Deursen, A., Klint, P., and Visser, J. 2000. Domain-specific languages: An annotated bibliography. ACM SIGPLAN Notices 35, 6 (June), 26--36.]] Google Scholar
- van Engelen, R. 2001. ATMOL: A domain-specific language for atmospheric modeling. J. Comput. Inform. Techn. 9, 4, 289--303.]]Google Scholar
- Veldhuizen, T. L. 1995a. Expression templates. C++ Report 7, 5 (June) 26--31.]]Google Scholar
- Veldhuizen, T. L. 1995b. Using C++ template metaprograms. C++ Report 7, 4 (May) 36--43.]]Google Scholar
- Veldhuizen, T. L. 2001. Blitz++ User's Guide. Version 1.2 http://www.oonumerics.org/blitz/manual/blitz.ps.]]Google Scholar
- Visser, E. 2003. Stratego---Strategies for program transformation. http://www.stratego-language.org.]]Google Scholar
- Wang, D. C., Appel, A. W., Korn, J. L., and Serra, C. S. 1997. The Zephyr abstract syntax description language. In Proceedings of the USENIX Conference on Domain-Specific Languages, 213--28.]] Google Scholar
- Weiss, D. and Lay, C. T. R. 1999. Software Product Line Engineering. Addison-Wesley.]] Google Scholar
- Wexelblat, R. L., Ed. 1981. History of Programming Languages. Academic Press.]] Google Scholar
- Wile, D. S. 1993. POPART: Producer of Parsers and Related Tools. USC/Information Sciences Institute. http://mr.teknowledge.com/wile/popart.html.]]Google Scholar
- Wile, D. S. 2001. Supporting the DSL spectrum. J. Comput. Inform. Techn. 9, 4, 263--287.]]Google Scholar
- Wile, D. S. 2004. Lessons learned from real DSL experiments. Sci. Comput. Program. 51, 265--290.]] Google Scholar
- Wile, D. S. and Ramming, J. C. 1999. Special issue on Domain-Specific Languages. IEEE Trans. Softw. Eng. SE-25, 3 (May/June).]]Google Scholar
- Xiong, J., Johnson, J., Johnson, R. W., and Padua, D. A. 2001. SPL: A language and compiler for DSP algorithms. In Proceedings of the 2001 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'01). ACM, 298--308.]] Google Scholar
Index Terms
When and how to develop domain-specific languages
Recommendations
Everything old is new again: quoted domain-specific languages
PEPM '16: Proceedings of the 2016 ACM SIGPLAN Workshop on Partial Evaluation and Program ManipulationWe describe a new approach to implementing Domain-Specific Languages(DSLs), called Quoted DSLs (QDSLs), that is inspired by two old ideas:quasi-quotation, from McCarthy's Lisp of 1960, and the subformula principle of normal proofs, from Gentzen's ...
Testing domain-specific languages
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionThe Spoofax testing language provides a new approach to testing domain-specific languages as they are developed. It allows test cases to be written using fragments of the language under test, providing full IDE support for writing test cases and ...
Declaratively defining domain-specific language debuggers
GCPE '11Tool support is vital to the effectiveness of domain-specific languages. With language workbenches, domain-specific languages and their tool support can be generated from a combined, high-level specification. This paper shows how such a specification ...
Comments