[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3136014.3136038acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

A chrestomathy of DSL implementations

Published: 23 October 2017 Publication History

Abstract

Selecting and properly using approaches for DSL implementation can be challenging, given their variety and complexity. To support developers, we present the software chrestomathy MetaLib, a well-organized and well-documented collection of DSL implementations useful for learning. We focus on basic metaprogramming techniques for implementing DSL syntax and semantics. The DSL implementations are organized and enhanced by feature modeling, semantic annotation, and model-based documentation. The chrestomathy enables side-by-side exploration of different implementation approaches for DSLs. Source code, feature model, feature configurations, semantic annotations, and documentation are publicly available online, explorable through a web application, and maintained by a collaborative process.

References

[1]
Michal Antkiewicz, Wenbin Ji, Thorsten Berger, Krzysztof Czarnecki, Thomas Schmorleiz, Ralf Lämmel, Stefan Stanciulescu, Andrzej Wasowski, and Ina Schaefer. 2014. Flexible product line engineering with a virtual platform. In Proc. ICSE 2014. ACM, 532–535.
[2]
Sven Apel, Don Batory, Christian Kästner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines: Concepts and Implementation . Springer.
[3]
T Berger, M. Voelter, H. P. Jensen, T Dangprasert, and J. Siegmund. 2016. Efficiency of Projectional Editing: A Controlled Experiment. In Proc. FSE 2016 . ACM.
[4]
Eugene Burmako. 2013. Scala macros: let our powers combine!: on how rich syntax and static types work with metaprogramming. In Proc. 4th Workshop on Scala, SCALA@ECOOP 2013 . ACM, 3:1–3:10.
[5]
Walter Cazzola and Edoardo Vacchi. 2016. Language Components for Modular DSLs using Traits. Computer Languages, Systems & Structures 45 (2016), 16–34.
[6]
Krysztof Czarnecki and Ulrich Eisenecker. 2000. Generative Programming: Methods, Tools, and Applications . Addison-Wesley Professional. 1st Edition.
[7]
Krzysztof Czarnecki and Simon Helsen. 2006. Feature-based survey of model transformation approaches. IBM Systems Journal 45, 3 (2006), 621–646.
[8]
Krzysztof Czarnecki, John T. O’Donnell, Jörg Striegnitz, and Walid Taha. 2003. DSL Implementation in MetaOCaml, Template Haskell, and C++. In Domain-Specific Program Generation (LNCS), Vol. 3016. Springer, 51–72.
[9]
Sven Efftinge and Markus Völter. 2006. oAW xText: A framework for textual DSLs. In Workshop on Modeling Symposium at Eclipse Summit, Vol. 32. 118.
[10]
Kathleen M Eisenhardt and Melissa E Graebner. 2007. Theory building from cases: Opportunities and challenges. Academy of management journal 50, 1 (2007), 25–32.
[11]
Sebastian Erdweg. 2013. Extensible Languages for Flexible and Principled Domain Abstraction . Ph.D. Dissertation. Philipps-Universität Marburg.
[12]
Sebastian Erdweg, Tijs van der Storm, Markus Völter, Laurence Tratt, Remi Bosman, William R. Cook, Albert Gerritsen, Angelo Hulshout, Steven Kelly, Alex Loh, Gabriël D. P. Konat, Pedro J. Molina, Martin Palatnik, Risto Pohjonen, Eugen Schindler, Klemens Schindler, Riccardo Solmi, Vlad A. Vergu, Eelco Visser, Kevin van der Vlist, Guido Wachsmuth, and Jimi van der Woning. 2015. Evaluating and comparing language workbenches: Existing results and benchmarks for the future. Computer Languages, Systems & Structures 44 (2015), 24–47.
[13]
Jean-Marie Favre, Ralf Lämmel, Martin Leinberger, Thomas Schmorleiz, and Andrei Varanovich. 2012. Linking Documentation and Source Code in a Software Chrestomathy. In Proc. WCRE 2012. IEEE, 335–344.
[14]
Jean-Marie Favre, Ralf Lämmel, Thomas Schmorleiz, and Andrei Varanovich. 2012. 101companies: A Community Project on Software Technologies and Software Languages. In Proc. TOOLS 2012 (LNCS), Vol. 7304. Springer, 58–74.
[15]
Matthew Flatt. 2012. Creating languages in Racket. Commun. ACM 55, 1 (2012), 48–56.
[16]
Sebastian Günther and Marco Fischer. 2010. Metaprogramming in Ruby: a pattern catalog. In Proc. PLoP 2010. ACM, 1:1–1:35.
[17]
P. Hudak. 1998. Modular Domain Specific Languages and Tools. In Proc. ICSR 1998 . IEEE, 134–142.
[18]
K. Kang, S. Cohen, J. Hess, W. Nowak, and S. Peterson. 1990. FeatureOriented Domain Analysis (FODA) Feasibility Study . Technical Report CMU/SEI-90-TR-21. CMU.
[19]
Lennart C. L. Kats and Eelco Visser. 2010. The Spoofax language workbench: rules for declarative specification of languages and IDEs. In Proc. OOPSLA 2010. ACM, 444–463.
[20]
Paul Klint, Tijs van der Storm, and Jurgen J. Vinju. 2010. On the impact of DSL tools on the maintainability of language implementations. In Proc. LDTA 2010 . ACM, 10.
[21]
Paul Klint, Tijs van der Storm, and Jurgen J. Vinju. 2011. EASY Metaprogramming with Rascal. In GTTSE 2009, Revised Papers (LNCS), Vol. 6491. Springer, 222–289.
[22]
Toma Kosar, Pablo E. Martínez López, Pablo A. Barrientos, and Marjan Mernik. 2008. A preliminary study on various implementation approaches of domain-specific language. Information and Software Technology 50, 5 (2008), 390–405.
[23]
Ivan Kurtev, Jean Bézivin, and Mehmet Akşit. 2002. Technological Spaces: an Initial Appraisal. In Proc. of CoopIS, DOA 2002, Industrial track .
[24]
Ralf Lämmel. 2015. Software chrestomathies. Sci. Comput. Program. 97 (2015), 98–104.
[25]
R. Lämmel. 2017. Software languages: Syntax, semantics, and metaprogramming . Springer. To appear. See http://www.softlang.org/book .
[26]
Ralf Lämmel, Martin Leinberger, Thomas Schmorleiz, and Andrei Varanovich. 2014. Comparison of feature implementations across languages, technologies, and styles. In Proc. CSMR-WCRE 2014. IEEE, 333–337.
[27]
Geoffrey Mainland. 2007. Why it’s nice to be quoted: quasiquoting for Haskell. In Proc. Haskell 2007. ACM, 73–82.
[28]
Marjan Mernik, Jan Heering, and Anthony M. Sloane. 2005. When and how to develop domain-specific languages. ACM Comput. Surv. 37, 4 (2005), 316–344.
[29]
Sebastian Nanz and Carlo A. Furia. 2015. A Comparative Study of Programming Languages in Rosetta Code. In Proc. ICSE 2015. IEEE Computer Society, 778–788.
[30]
Terence Parr. 2013. The Definitive ANTLR 4 Reference (2nd ed.). Pragmatic Bookshelf.
[31]
Lukas Renggli. 2010. Dynamic Language Embedding With Homogeneous Tool Support . Ph.D. Dissertation. Universität Bern.
[32]
Alexey Rodriguez, Johan Jeuring, Patrik Jansson, Alex Gerdes, Oleg Kiselyov, and Bruno C. d. S. Oliveira. 2008. Comparing libraries for generic programming in Haskell. In Proc. of Haskell 2008. ACM, 111– 122.
[33]
Tiark Rompf, Nada Amin, Adriaan Moors, Philipp Haller, and Martin Odersky. 2012. Scala-Virtualized: linguistic reuse for deep embeddings. Higher-Order and Symbolic Computation 25, 1 (2012), 165–207.
[34]
Tim Sheard and Simon L. Peyton Jones. 2002. Template metaprogramming for Haskell. SIGPLAN Notices 37, 12 (2002), 60–75.
[35]
Dave Steinberg, Frank Budinsky, Marcelo Paternostro, and Ed Merks. 2008. EMF: Eclipse Modeling Framework (2 ed.). Pearson Education.
[36]
Walid Taha. 2008. A Gentle Introduction to Multi-stage Programming, Part II. In GTTSE 2007, Revised Papers (LNCS), Vol. 5235. Springer, 260–290.
[37]
V. Viyović, M. Maksimović, and B. Perisić. 2014. Sirius: A rapid development of DSM graphical editor. In Proc. INES 2014. IEEE, 233–238.
[38]
Markus Voelter. 2013. Language and IDE Modularization and Composition with MPS. In GTTSE 2011, Revised Papers (LNCS), Vol. 7680. Springer, 383–430.

Cited By

View all
  • (2022)Editing support for software languagesProceedings of the 25th International Conference on Model Driven Engineering Languages and Systems10.1145/3550355.3552452(232-243)Online publication date: 23-Oct-2022
  • (2022)Survey of established practices in the life cycle of domain-specific languagesProceedings of the 25th International Conference on Model Driven Engineering Languages and Systems10.1145/3550355.3552413(266-277)Online publication date: 23-Oct-2022
  • (2020)Languages for Specifying Missions of Robotic ApplicationsSoftware Engineering for Robotics10.1007/978-3-030-66494-7_12(377-411)Online publication date: 17-Dec-2020

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
SLE 2017: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering
October 2017
267 pages
ISBN:9781450355254
DOI:10.1145/3136014
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 23 October 2017

Permissions

Request permissions for this article.

Check for updates

Author Tag

  1. DSL implementation. Metaprogramming. Software chrestomathy. Learning. MetaLib. Feature modeling. Model-based documentation

Qualifiers

  • Research-article

Conference

SPLASH '17
Sponsor:

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)13
  • Downloads (Last 6 weeks)0
Reflects downloads up to 12 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2022)Editing support for software languagesProceedings of the 25th International Conference on Model Driven Engineering Languages and Systems10.1145/3550355.3552452(232-243)Online publication date: 23-Oct-2022
  • (2022)Survey of established practices in the life cycle of domain-specific languagesProceedings of the 25th International Conference on Model Driven Engineering Languages and Systems10.1145/3550355.3552413(266-277)Online publication date: 23-Oct-2022
  • (2020)Languages for Specifying Missions of Robotic ApplicationsSoftware Engineering for Robotics10.1007/978-3-030-66494-7_12(377-411)Online publication date: 17-Dec-2020

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media