====== [hemmerling] Textual and Graphical Modeling by Domain Specific Languages ====== Related pages: *[[api.html|Application programming interface ( API )]]. *[[ddl.html|Device Description Languages and Device Parameterization]]. *[[forth.html|FORTH 1/7]]. *[[android06.html|Google Android 6/7 - App Protoyping]]. *[[prglang.html|Programming Languages, Platforms and Runtimes]]. *[[specbyex.html|Specification by Example, Modelling by Example]]. *[[systemdesign.html|System Design]]. *[[uml.html|Unified Modeling Language ( UML ), Systems Modeling Language ( SysML )]]. ===== Organisations and Events ==== ==== 2001 - 2016 ==== *[[http://www.dsmforum.org/|DSM Forum]]. *[[http://www.dsmforum.org/events.html|DSM Forum "DSM Events"]]. *[[http://www.dsmforum.org/DSMworkshops.html|DSM Forum "DSM workshops"]] ( 2001 - 2016 ). *[[http://www.dsmforum.org/events/DSVL01/DSVL01.html|1st DSM workshop at OOPSLA 2001]] in Tampa Bay. *[[http://www.dsmforum.org/events/DSVL02/DSVL02.html|2nd DSM workshop at OOPSLA 2002]] in Seattle. *[[http://www.dsmforum.org/events/DSM03/DSM03.html|3rd DSM workshop at OOPSLA 2003]] in Anaheim. *[[http://www.dsmforum.org/events/DSM04/DSM04.html|4th DSM workshop at OOPSLA/GPCE 2004]] in Vancouver. *[[http://www.dsmforum.org/events/DSM05/|5th DSM workshop at OOPSLA 2005]] in San Diego. *[[http://www.dsmforum.org/events/DSM06/|6th DSM workshop at OOPSLA 2006]] in Portland. *[[http://www.dsmforum.org/events/DSM07/|7th DSM workshop at OOPSLA 2007]] in Montréal. *[[http://www.dsmforum.org/events/DSM08/|8th DSM workshop at OOPSLA 2008]] in Nashville. *[[http://www.dsmforum.org/events/DSM09/|9th DSM workshop at OOPSLA 2009]] in Orlando. *[[http://www.dsmforum.org/events/DSM10/|10th DSM workshop at SPLASH/OOPSLA 2010]] in Reno/Tahoe. *[[http://www.dsmforum.org/events/DSM11/|11th DSM workshop at SPLASH/OOPSLA 2011]] in Portland. *[[http://www.dsmforum.org/events/DSM12/index.html|12th DSM workshop at SPLASH/OOPSLA 2012]] in Tucson. *[[http://www.dsmforum.org/events/DSM13/|13th DSM workshop at SPLASH 2013]] in Indianapolis. *[[http://www.dsmforum.org/events/DSM14/|14th DSM workshop at SPLASH 2014]] in Portland. *[[http://www.dsmforum.org/events/DSM15/|15th DSM workshop at SPLASH 2015]] in Pittsburgh. *[[http://www.dsmforum.org/events/DSM16|16th DSM workshop at SPLASH 2016]] in **Amsterdam**. *[[http://web.archive.org/web/*/http://tools.ethz.ch/tools2007/|TOOLS EUROPE 2007]]. *[[http://web.archive.org/web/*//tools.ethz.ch/tools2007/callforworkshops.html|TOOLS EUROPE 2007 "Workshops"]]. *[[http://www.dsmforum.org/events/MDD-TIF07/|DSM Forum "MDD-TIF07. Model-Driven Development Tool Implementers Forum"]] - The predecessor of LWC events. *Microsoft Visual Studio Domain-Specific Language Tools ( DSL Tools ). *EMF/GMF/oAW. *GME. *The commercial [[http://www.isis.vanderbilt.edu/projects/gme/| "GME: Generic Modeling Environment"]], [[http://www.webgme.org/|WebGME]]. *[[https://en.wikipedia.org/wiki/Generic_Modeling_Environment|EN.Wikipedia "Generic Modeling Environment"]]. *MetaEdit+. *AMMA/ATL. *C-SAW. *Epsilon. *[[http://www.eclipse.org/epsilon/|Eclipse "Epsilon"]] - "A family of languages and tools for code generation, model-to-model transformation, model validation, comparison, migration and refactoring that work out of the box with EMF and other types of models". *GEMS *TOPCASED *XMF *[[http://www.eis.mdx.ac.uk/staffpages/tonyclark/Software/xmf.html|Tony Clark "XMF and XMF-Mosaic"]] - "XMF is a programming language for Language Oriented Programming and developing Domain Specific Languages. XMF is a fully featured language that can be used to process XML, interface to Java (including EMF) and connect to input/output data streams". ==== 2009 - 2018 ==== *[[http://www.sleconf.org/|ACM SIGPLAN International Conference on Software Language Engineering (SLE)]]. *[[http://www.sleconf.org/2018/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2018]] in Boston, USA. *[[http://www.sleconf.org/2017/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2017]] in Vancouver, Canada. *[[http://www.sleconf.org/2016/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2016]] in **Amsterdam**, Netherlands. *[[http://www.sleconf.org/2015/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2015]] in Pittsburg, USA. *[[http://www.sleconf.org/2014/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2014]] in Västerås, Sweden. *[[http://www.sleconf.org/2013/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2013]]. *[[http://www.sleconf.org/2012/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2012]] in **Dresden**, Germany. *[[http://www.sleconf.org/2011/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2011]] in Braga, Portugal. *[[http://www.sleconf.org/2010/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2010]]. *[[http://www.sleconf.org/2009/|ACM SIGPLAN International Conference on Software Language Engineering (SLE), 2009]] - "SLE2009 is the second edition of the SLE conference series". *SLE2008. ==== 2009 - 2014 ==== *Series of conferences [[http://www.codegeneration.net/|Code Generation, Churchill College, Cambridge UK]]. *[[http://codegeneration.net/cg2014/|Code Generation 2014]]. *[[http://codegeneration.net/cg2013/|Code Generation 2013]]. *[[http://codegeneration.net/cg2012/|Code Generation 2012]]. *[[http://codegeneration.net/cg2011/|Code Generation 2011]]. *[[http://codegeneration.net/cg2010/|Code Generation 2010]]. *[[http://codegeneration.net/cg2009/|Code Generation 2009]]. *[[http://codegeneration.net/cg2007/|Code Generation 2007]]. ==== 2011 - 2014 ==== *[[http://web.archive.org/web/*/http://www.languageworkbenches.net/|Archive.org "Language Workbench Challenge"]] of 2010-2014 ( - 2017-06-28 ) - "Comparing Tools of the Trade". Experts told me "A number of language workbenches are illustrated by implementing the same example DSLs. This provides a ood way of comparing the various tools". *[[http://groups.google.com/forum/#!forum/languagewb|Google Groups "Language Workbench Challenge"]]. *[[http://twitter.com/wsdsldi|Twitter "DSLDI, @wsdsldi"]]. === 2014 === *[[http://web.archive.org/web/*/http://www.languageworkbenches.net:80/2014/08/lwc2014-the-participants/|Archive.org "Language Workbench Challenge" - "LWC2014: the participants"]], 2014. No assignment :-(. *Rascal. *"Whole Platform". *The commercial [[http://www.metada.com/|Metada]], [[http://www.metarepository.com/|metarepository]]. *The commercial [[http://www.metacase.com/|MetaCase]]. *[[http://www.metacase.com/news/smart_model_versioning.html|MetaCase "Smart Model Versioning: MetaEdit+ brings models to GitHub"]]. *[[http://www.youtube.com/channel/UCZOtohR6y9R71qh01PYCG3g|YouTube Channel "MetaEdit"]]. *[[http://www.youtube.com/watch?v=SlAL-3e07JQ|YouTube "Smart Model Versioning in MetaEdit+"]] *"MontiCore". *MPS. *Spoofax. === 2013 === *[[http://web.archive.org/web/*/http://www.languageworkbenches.net:80/past-editions/|Archive.org "Language Workbench Challenge" - "Past editions"]], 2014. *[[http://web.archive.org/web/*/http://www.languageworkbenches.net/index.php?title=LWC_2013|Archive.org "Language Workbench Challenge" - "LWC2013"]] ( - 2013-08-13 ). Assignment "Questionnaire Language (QL)". *[[http://mas-wb.appspot.com/|Más - domain modeling in the Cloud, made easy]], [[http://web.archive.org/web/*/http://www.mas-wb.com/|Archive.org "Más - domain modeling in the Cloud, made easy"]] by [[http://www.dslconsultancy.com/|DslConsultancy]]. *[[http://www.github.com/dslmeinte|GitHub "Meinte Boersma"]]. *[[http://www.linkedin.com/in/meinte-boersma-965a681|LinkedIn "Meinte Boersma"]]. *[[http://www.twitter.com/meinte37|Twitter "Meinte Boersma, @meinte37"]]. *Blog [[http://www.medium.com/@dslmeinte|Medium "Meinte Boersma"]]. *Blog [[http://dslmeinte.wordpress.com/|Meinte's DSL Blog. My thoughts on DSLs, model-driven software engineering]] ( - 2014-10-04 ). *[[http://www.student.informatik.tu-darmstadt.de/~xx00seba/|Sebastian Erdweg"]]. *[[http://www.student.informatik.tu-darmstadt.de/~xx00seba/projects/sugarj/|Sebastian Erdweg "SugarJ. Library-based Language Extensibility"]], [[http://sugarj.org/|SugarJ]]. *[[http://www.github.com/seba--/sugarj/|GitHub "seba--/sugarj"]]. *[[http://www.github.com/seba--/sugarj/tree/questionnaire/case-studies/questionnaire-language|GitHub "seba--/sugarj/tree/questionnaire/case-studies/questionnaire-language"]]. *[[http://www.metatis.com/|Metatis]] - "Whole Platform". *Assignment solution [[http://www.github.com/wholeplatform/whole-examples|GitHub "wholeplatform/whole-examples"]]. *The commercial [[http://www.generativeobjects.com/|Generative Objects SARL]]. *The commercial [[http://www.icinetic.com/|Icinetic]]. *Assignment solution [[http://bitbucket.org/icinetic/lwc2013-icinetic/|BitBucket "icinetic/lwc2013-icinetic/"]]. *[[http://www.sioux.eu/|Sioux Group B.V.]] - MPS, XTEXT, Clojure ( LISP ). *Assignment solution [[http://code.google.com/archive/p/mps-lwc13/|Google Code Archive "mps-lwc13"]]. *Assignment solution [[http://code.google.com/archive/a/eclipselabs.org/p/lwc13-xtext|Google Code Archive "lwc13-xtext"]]. *Assignment solution [[http://github.com/rix0rrr/lwc-2013-clojure|GitHub "rix0rrr/lwc-2013-clojure"]]. *[[http://www.eelcovisser.org/|Eelco Visser]] - Spoofax. *Assignment solution [[http://www.github.com/MetaBorgCube/metaborg-ql|GitHub "MetaBorgCube/metaborg-ql"]]. *[[http://homepages.cwi.nl/~storm/|Tijs van der Storm]] - Rascal. *Assignment solution [[http://www.github.com/cwi-swat/QL-R-kem|GitHub "cwi-swat/QL-R-kem"]]. *[[http://www.researchgate.net/profile/Alex_Loh|Alex Loh]]. *[[http://web.archive.org/web/*/http://www.enso-lang.org/|Archive.org "Ensō - Don´t Design Your Programs, Program Your Designs"]] - "Ensō: A self-describing DSL workbench". *Blog [[http://web.archive.org/web/*/http://enso-lang.org/blog/|Ensō Blog - Ensō on MOdeling LAnguages blog]] ( - 2012-08-08 ). *[[http://www.modeling-languages.com/enso-dont-design-your-programs-program-your-designs/|MOdeling LAnguages " Ensō: Don’t Design Your Programs, Program Your Designs"]]. *The OpenSource [[http://www.github.com/enso-lang|GitHub "Enso Admin"]]. *[[http://www.metacase.com/|MetaCase]] - MetaEdit+. *Assignment solution [[http://www.metacase.com/support/50/repository/|MetaCase "Language Workbench Challenge 2013"]] ( [[http://www.metacase.com/support/50/repository/LWC2013_MetaEdit.pdf|LWC2013_MetaEdit.pdf]], [[http://www.metacase.com/support/50/repository/LWC2013.zip|LWC2013.zip]] ). *"Danubius Design Studio" by [[http://www.danubiusinfo.hu/|Danubius Informatika]]. *[[http://www.youtube.com/channel/UCHT9-s3Ulrsnn2_WGXh7T8Q|YouTube Channel "Viktor Tönköl"]] - Videos "Danubius Design Studio Demo". *[[http://plus.google.com/102651414003943617948|Google+ "Viktor Tönköl"]]. === 2012 === *[[http://web.archive.org/web/*/http://www.languageworkbenches.net:80/past-editions/|Archive.org "Language Workbench Challenge" - "Past editions"]], 2014. *[[http://web.archive.org/web/*/http://www.languageworkbenches.net/index.php?title=LWC_2012|Archive.org "Language Workbench Challenge" - "LWC2012"]] ( - 2013-07-05 ). Assignment "Piping & Instrumentation Domain Model". *The commercial but affordable [[http://web.archive.org/web/*/http://www.atomweaver.com/|Archive.org "AtomWeaver - Easy Model-Driven Software Development"]] for Windows. *[[http://web.archive.org/web/*/http://www.atomweaver.com:80/buy.html|Archive.org "AtomWeaver - Comparison Matrix: Free Mode - Full Mode]]. *Assignment solution [[https://github.com/wholeplatform/whole-examples/blob/master/org.whole.crossexamples.cg12/src/org/whole/crossexamples/lwc12/LWC2012_AtomWeaver_Submission.pdf|LWC2012_AtomWeaver_Submission.pdf]]. *[[http://www.metacase.com/|MetaCase]] - MetaEdit+. *Assignment solution [[http://www.metacase.com/support/50/repository/LWC12_MetaEdit.pdf|LWC12_MetaEdit.pdf]], [[http://www.metacase.com/support/50/repository/lwc12.zip|lwc12.zip]]. *[[http://www.sioux.eu/|Sioux Group B.V.]] - UML and XPand. *Assignment solution [[http://www.github.com/wholeplatform/whole-examples/blob/master/org.whole.crossexamples.cg12/src/org/whole/crossexamples/lwc12/LWC2012_Submission_UML_and_XPand.pdf|LWC2012_Submission_UML_and_XPand.pdf]]. *XPand: *[[http://www.peterfriese.de/getting-started-with-code-generation-with-xpand/|Peter Friese "Getting Started With Code Generation With Xpand"]]. *Rascal. No assignement solution *Sculpture Toolkit. *[[http://web.archive.org/web/*/http://www.modelingsoft.com|Archive.org "ModelingSoft"]] ( - 2013-06-23 ). *[[http://marketplace.visualstudio.com/items?itemName=ANegm.SculptureToolkit|VisualStudio Marketplace "Sculpture Toolkit"]] by [[http://marketplace.visualstudio.com/search?term=publisher%3A%22ANegm%22&target=VS&category=All%20categories&vsVersion=&sortBy=Relevance|VisualStudio Marketplace - Search for "ANegm"]]. *Assignment solution [[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.cg12/src/org/whole/crossexamples/lwc12/SculptureToolkitLWC2012.pdf|SculptureToolkitLWC2012.pdf]], [[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.cg12/src/org/whole/crossexamples/lwc12/SculptureToolkitLWC2012.zip|SculptureToolkitLWC2012.zip]]. *Más. *[[http://code.google.com/archive/a/eclipselabs.org/p/spray|Google Code Archive "Spray"]]. *Assignment solution [[http://github.com/wholeplatform/whole-examples/blob/master/org.whole.crossexamples.cg12/src/org/whole/crossexamples/lwc12/SprayCodeGeneration2012.pdf|SprayCodeGeneration2012.pdf]]. *"Actifsource Workbench" *[[http://www.actifsource.com/papers/actifsource_workbench/|Actifsource AG "Actifsource Workbench"]]. *Assignment solution [[http://www.actifsource.com/papers/actifsource_workbench/487.html|Actifsource AG "Language Workbench Challenge 2011"]]. *Assignment solution [[http://www.actifsource.com/papers/actifsource_workbench/491.html|Actifsource AG "Language Workbench Challenge 2012"]]. === 2011 === *[[http://web.archive.org/web/*/http://www.languageworkbenches.net:80/past-editions/|Archive.org "Language Workbench Challenge" - "Past editions"]], 2014. *[[http://web.archive.org/web/*/http://www.languageworkbenches.net:80/index.php?title=LWC_2011|Archive.org "Language Workbench Challenge" - "LWC2011"]] ( - 2012-11-03 ). Assignment "Phase 0 - Basics, Phase 1 - Advanced, Phase 2 - Non-Functional". *Xtext. *Assignment solution [[http://web.archive.org/web/*/http://www.languageworkbenches.net/wp-content/uploads/2013/11/LWC11-XtextSubmission.pdf|LWC11-XtextSubmission.pdf]], [[http://code.google.com/archive/a/eclipselabs.org/p/lwc11-xtext|Google Code Archive "lwc11-xtext"]]. *MPS. *Assignment solution [[http://code.google.com/archive/p/mps-lwc11/|Google Code Archive "mps-lwc11"]]. *MetaEdit. *[[http://web.archive.org/web/20160815183306/http://www.metacase.com/support/45/repository/|MetaCase "Language Workbench Competition 2011"]] - "The Language Workbench Competition follows in the tradition of the earlier [[http://www.dsmforum.org/events/MDD-TIF07/|MDD-TIF07]] by giving the same set of tasks to all of the metamodeling tools". *[[http://www.metacase.com/support/45/repository/LWC11_MetaEdit.pdf|LWC11_MetaEdit.pdf]], [[http://www.metacase.com/support/45/repository/LWC11.zip|LWC11.zip]]. *EMFText/JaMoPP, *Assignment solution [[http://www.emftext.org/index.php/EMFText_Concrete_Syntax_Zoo_LWC2011|EMFText "EMFText_Concrete_Syntax_Zoo_LWC2011"]] ?? *OOMEGA. *[[http://web.archive.org/web/*/http://www.oomega.net/|Archive.org "Object Database Management System ( OOMEGA )"]]. *Confluence Wiki [[https://web.archive.org/web/*/http://wiki.oomega.net/dashboard.action|OOMEGA Wiki]]. *Whole Platform. *Essential. *[[http://www.pjmolina.com/|Pedro J. Molina]]. *[[http://www.pjmolina.com/metalevel/|Pedro J. Molina - The Metalevel. Abstraction based levitation]]. *[[http://www.pjmolina.com/metalevel/essential/|Pedro J. Molina - The Metalevel "Essential"]]. *Assignment solution [[http://github.com/pjmolina/lwc11-essential|GitHub "pjmolina/lwc11-essential"]], [[http://code.google.com/archive/p/lwc11-essential/|Google Code Archive "lwc11-essential"]]. *Spoofax. *Assignment solution [[http://www.languageworkbenches.net/wp-content/uploads/2013/11/LWCTask-1.0-Spoofax.pdf|LWCTask-1.0-Spoofax.pdf]], [[http://strategoxt.org/Spoofax/LWC2011|Spoofax "Language Workbenches Comparison 2011"]]. *Intentional. *Rascal. *Atom3. *Obeo Designer. *[[http://code.google.com/archive/a/eclipselabs.org/p/lwc11-obeodesigner|Google Code Archive "lwc11-obeodesigner"]]. *Cedalion. ==== 2013 - 2018 ==== *[[http://www.lirmm.fr/ec-montpellier-2013/|ECMFA, ECOOP and ECSA 2013, 3 conferences co-located in July 2013, in Montpellier, France]]. *[[http://dsldi2013.hyperdsls.org/|First Workshop on Domain Specific Languages Design and Implementation (DSLDI)]]. *[[http://2014.splashcon.org/series/dsldi|DSLDI conference series]]. *[[http://2014.splashcon.org/track/dsldi2014|SPLASH 2014 (series) / DSLDI (series) "DSLDI Domain-Specific Language Design and Implementation"]] - "The Second Workshop on Domain-Specific Language Design and Implementation (DSLDI)". *[[http://sites.google.com/site/dsldi2014/|Google Sites "Domain-Specific Language Design and Implementation Second Workshop, 2014"]]. *[[http://2015.ecoop.org/track/dsldi-2015-papers| ECOOP 2015 (series) / DSLDI 2015 (series) "DSLDI 2015"]] - "3rd Workshop on DSL Design and Implementation (DSLDI)". *[[http://www.twitter.com/ecoop2015|Twitter "ECOOP 2015, @ecoop2015"]]. *[[http://2016.splashcon.org/track/dsldi2016| SPLASH 2016 (series) / DSLDI 2016 (series) "DSLDI 2016"]] in Amsterdam. *[[http://2016.splashcon.org/track/lwc2016|this.splash 2016 "LWC@SLE 2016 Language Workbench Challenge"]]. *[[http://twitter.com/wsdsldi|Twitter "DSLDI, @wsdsldi"]] *[[http://2017.splashcon.org/track/dsldi-2017|SPLASH 2017 (series) / DSLDI 2017 (series) "DSLDI 2017"]]. *[[http://2018.splashcon.org/track/dsldi-2018-talks| SPLASH 2018 (series) / DSLDI 2018 (series) "DSLDI 2018"]]. ==== 2016 - 2018 ==== *[[http://sites.google.com/site/realworlddsl/|International Workshop on Real World Domain Specific Languages]] - "Held in conjunction with the CGO'18 international symposium on Code Generation and Optimisation". *[[http://cgo.org/cgo2016/|International Symposium on Code Generation and Optimization, 2016]]. *[[http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=49003©ownerid=48563|WikiCFP "RealDSLs 2016 : Workshop on Real World Domain Specific Languages"]]. *[[http://cgo.org/cgo2017/|International Symposium on Code Generation and Optimization, 2017]]. *[[http://cgo.org/cgo2018/|International Symposium on Code Generation and Optimization, 2018]] in **Vienna**. *[[http://sites.google.com/site/realworlddsl/|3rd International Workshop on Real World Domain Specific Languages 2018]]. ==== 2018 ==== *I participated in the event"Why 'Modeling Sucks' Sucks!" by [[http://www.xing.com/profile/Markus_Voelter|Markus Voelter]] at the regional meeting of [[http://www.jug-ostfalen.de/|Java User Group Ostfalen]] in Braunschweig, Germany ( 2018-02-20 ). *The commercial, but affordable event "JetBrains MPS Community Meetup". *[[http://www.meetup.com/en-AU/Everything-you-need-to-know-about-JetBrains-MPS/|Meetup "Everything You Need to Know About JetBrains MPS"]]. *[[http://www.eventbrite.de/e/jetbrains-mps-community-meetup-tickets-42234626906|Eventbrite "JetBrains MPS Community Meetup"]], 2018-04-19 - 2018-04-20. *[[http://www.medium.com/@dslmeinte/the-munich-mps-meetup-2018-my-impression-91fa280e82e2|Meinte Boersma "The Munich MPS Meetup 2018: my impression"]]. *[[http://blog.openmodeling.nl/mps/mps-meetup/|Jos Warmer's Blog "MPS Meetup, April 2018, Munich]]. *[[http://www.nikostotz.de/blog/2018/04/27/|Nikos Totz "High-Performance Interpreters for JetBrains MPS"]] - "At the great MPS Meetup last week in Munich I had a chance to give a talk on the MPS Interpreter". ===== Graphical Modeling by Domain Specific Languages ===== ==== Entity Relationship Model & Class - Visual Design for Java ==== *[[http://jeddict.github.io/|GitHub.io "Jeddict"]], [[http://www.github.com/jeddict|GitHub "Jeddict"]] - "Jeddict is an open source graphical tool that enhances productivity and simplifies development tasks of creating complex entity relationship models. Using it developers can create JPA class, visualize & modify Database and automates Java EE 8 code generation. The Jeddict provides forward & reverse engineering capabilities, import models from existing database, generate complex SQL/DDL and much more". ==== Security Graph Language ==== *[[http://www.sourceclear.com/sgl/|SourceClear "Security Graph Language"]]. *[[http://www.sourceclear.com/blog/SourceClear-Announces-First-of-its-Kind-Domain-Specific-Language-to-Identify-Open-Source-Vulnerabilities/|SourceClear "SourceClear Announces First of its Kind Domain-Specific Language to Identify Open-Source Vulnerabilities"]]. ==== UML ==== *See [[uml.html|Unified Modeling Language ( UML ), Systems Modeling Language ( SysML )]]. ===== Textual Modeling by Domain Specific Languages ===== ==== ANother Tool for Language Recognition ( ANTLR ) ==== === ANTLR === *[[http://www.antlr.org/|ANTLR.org]]. *[[http://www.antlr2.org/|ANTLRv2 by Terence Parr]]. *[[http://en.wikipedia.org/wiki/ANTLR|EN.Wikipedia "ANTLR"]], [[http://de.wikipedia.org/wiki/ANTLR|DE.Wikipedia "ANTLR"]]. *Experts told me, that the parser ANTLR doesn´t support the full set of context-free grammars. === DSL Forge === *The OpenSource [[http://www.dslforge.org/|DSL Forge]] - "DSL Forge framework allows you to get web-based textual editors from ANTLR grammars. From the grammar specification, a JavaScript parser and lexer are automatically generated and embedded into Cloud9’s ACE editor". *[[http://www.dslforge.org/dslforge-is-now-open-source/|DSL Forge "The DSL Forge is now open-source!"]]. ==== Gellish ==== *[[http://en.wikipedia.org/wiki/Gellish|EN.Wikipedia "Gellish"]]. *[[http://en.wikipedia.org/wiki/Gellish_English|EN.Wikipedia "Gellish English"]]. ==== mbeddr ==== === The Tool === *The free [[http://www.mbeddr.com/|mbeddr]]. *"mbeddr is a set of integrated and extensible languages for embedded software engineering, plus an IDE. It supports implementation, testing, verification and process aspects. It integrates with command-line build tools and integration servers, as well as file-based version control systems". *"mbeddr has support for requirements and product line definition, software documentation, implementation in C and C extensions such as state machines physical units or interfaces and components, as well as testing, mocking, as well as formal verification". *"mbeddr comes with a state-of-the-art IDE including syntax coloring, code completion, go to definition, realtime type checks, quick fixes, refactorings, customizable find-usages, automated synchronization between related parts of the code, version control integration and debugging". === Additional Tools, suggested by the Book "DSL Engineering", Page 100 === *[[http://spinroot.com/spin/whatispin.html|Spin - Verifying Multi-threaded Software]]. *"Spin is a popular open-source software verification tool, used by thousands of people worldwide. The tool can be used for the formal verification of multi-threaded software applications. The tool was developed at Bell Labs in the Unix group of the Computing Sciences Research Center, starting in 1980. The software has been available freely since 1991". *[[http://nusmv.fbk.eu/|NuSMV: a new symbolic model checker]]. === Documentation === *Video [[http://www.vimeo.com/78341172|Vimeo "mbeddr Overview Video"]]. *[[http://mbeddr.com/learn.html|mbeddr "Learn / User Guide"]]. *"The user guide is written and maintained in inside MPS using mbeddr's documentation language, because this supports close integration with the mbeddr artifacts documented in the user guide. It is available inside MPS as well as online". *[[http://mbeddr.com/userguide/UserGuideExport.html|mbeddr "mbeddr User Guide"]] ( HTML version ). *The PhD thesis [[http://www.voelter.de/data/books/GenericToolsSpecificLanguages-1.0-web.pdf|Markus VOELTER "Generic Tools, Specific Languages"]] ( 299 pages PDF ). *Book "DSL Engineering", page 101 "The extensibel C language comes with a 100-page PDF that shows ow to use the MPS-based IDE, illustrates the changes between regular C, provides examples for all C extensions and also discusses how to use the integrated analysis tools". ==== Unix / GNU / Linux Tools ==== *Students at [[http://www.complang.tuwien.ac.at/|TU Wien, Institut für Information Systems Engineering]] are tought compiler design to do with, in 2021: *Flex. *Bison. *Ox ( [[http://ox-attribute-grammar-compiler.sourceforge.net/|SourceForge "Ox: Attribute Grammar Compiling System"]], [[http://www.sourceforge.net/projects/ox-attribute-grammar-compiler/|SourceForge "Ox: Attribute Grammar Compiling System"]] ) - "Ox is an attribute-grammar evaluator generator". *iBURG ( [[http://www.github.com/drh/iburg|GitHub "drh / iburg"]] - Tree parsing for instruction selection. *[[http://dinosaur.compilertools.net/|The Lex & Yacc Page]]. *Lex - A Lexical Analyzer Generator. *Yacc: Yet Another Compiler-Compiler. *Flex, A fast scanner generator. *Bison, The YACC-compatible Parser Generator. *[[http://en.wikipedia.org/wiki/Awk|EN.Wikipedia "awk"]], [[http://de.wikipedia.org/wiki/Awk|DE.Wikipedia "awk"]]. *[[http://en.wikipedia.org/wiki/Flex_(lexical_analyser_generator)|EN.Wikipedia "Flex (lexical analyser generator)"]]. *[[http://en.wikipedia.org/wiki/GNU_bison|EN.Wikipedia "GNU bison"]], [[http://de.wikipedia.org/wiki/GNU_Bison|DE.Wikipedia "GNU Bison"]]. *[[http://en.wikipedia.org/wiki/Lex_%28software%29|EN.Wikipedia "lex (software)"]], [[http://de.wikipedia.org/wiki/Lex_%28Informatik%29|DE.Wikipedia "Lex (Informatik)"]]. *[[http://en.wikipedia.org/wiki/Yacc|EN.Wikipedia "yacc"]], [[http://de.wikipedia.org/wiki/Yacc|DE.Wikipedia "Yacc"]]. ==== WebDSL ==== *[[http://www.webdsl.org/|WebDSL]], [[http://github.com/webdsl[[|GitHub "WebDSL"]] - "Domain-Specific Language for Web Applications". ==== Some other Tools ==== *The free [[http://www.jflap.org/|JFLAP]] - "Software for experimenting with formal languages topics". *The OpenSource [[http://sculptorgenerator.org/|Sculptor]], [[http://www.github.com/sculptor|GitHub "Java code generator using concepts from Domain-Driven Design "]] - "An open source productivity tool that applies the concepts from Domain-Driven Design and Domain Specific Languages for generating high quality Java code and configuration from a textual specification". *The commercial [[http://open.xerox.com/Services/fst-nlp-tools|Open Xerox "Xerox Finite State Technology Tools for Natural Language Processing"]] - "xfst, twolc, and lexc". *[[http://www.ehow.com/list_7699295_xerox-finite-state-tools.html|eHow "Xerox Finite State Tools"]]. ===== Language Workbenches ===== ==== Actifsource Workbench ==== *[[http://www.actifsource.com/|Actifsource AG]] - "Build your Domain Specific Development Tool that turns your Software Specification into Running Code". *The free [[http://www.actifsource.com/download/actifsource_workbench_community/|Actifsource AG "Actifsource Workbench Community"]] - "Step 1: Accept License Restrictions: Use the Actifsource Workbench Community Edition for NON-commercial projects only". *[[http://www.actifsource.com/papers/actifsource_workbench/|Actifsource AG "Actifsource Workbench"]]. *Assignment solution [[http://www.actifsource.com/papers/actifsource_workbench/487.html|Actifsource AG "Language Workbench Challenge 2011"]]. *Assignment solution [[http://www.actifsource.com/papers/actifsource_workbench/491.html|Actifsource AG "Language Workbench Challenge 2012"]]. ==== AToM3, with Graphical Modeling ==== *The free [[http://atom3.cs.mcgill.ca/|MSDL "AToM3"]] of 2007 by [[http://atom3.cs.mcgill.ca/people/denis/|Denis Dube]]. *"AToM3 requires Python 1.5.2 or above (although version 2.2 is strongly recommended)". ==== Cedalion ==== *[[http://cedalion.sourceforge.net/|SourceForge "Cedalion"]], [[http://www.sourceforge.net/projects/cedalion|SourceForge "Cedalion"]] - "Cedalion is a programming language that is bundled with a projectional editor". ==== EMFText ==== === The Tool === *[[http://www.eclipse.org/modeling/emf/|Eclipse EMF]]. *[[http://www.emftext.org/|EMFText]], [[http://www.github.com/DevBoost/EMFText|GitHub "DevBoost/EMFText"]]. *"An Eclipse plug-in that allows you to define text syntax for languages described by an Ecore metamodel". *"You'd like to quickly create Domain-specific Languages?". *"You'd like to model the same way you program?". *"You are tired of awful UML tools?". *[[http://www.emftext.org/index.php/EMFText_Concrete_Syntax_Zoo|EMFText - EMF Syntax Zoo]]. *[[http://www.emftext.org/index.php/OWLText|OWLText]]. *The OpenSource Eclipse plugin [[http://jamopp.inf.tu-dresden.de/|JaMoPP - Java Model Parser and Printer]] for automated refactoring of Java source code by [[http://www.devboost.de/|DevBoost]], based on [[http://www.emftext.org/|EMFText]]. *[[http://www.xing.com/profile/Jendrik_Johannes|XING "Jendrik Johannes"]], [[http://www.devboost.de/|DevBoost]]. *[[http://en.wikipedia.org/wiki/Meta-Object_Facility|EN.Wikipedia "Meta Object Facility"]], [[http://de.wikipedia.org/wiki/Meta-Object_Facility|DE.Wikipedia "Meta Object Facility"]] - "The variant ECore that has been defined in the Eclipse Modeling Framework is more or less aligned on OMG's EMOF". === Code Generators === == Accelo == *[[http://www.eclipse.org/acceleo/|The Eclipse Foundation "Accelo"]] - "Is a pragmatic implementation of the Object Management Group (OMG) MOF Model to Text Language (MTL) standard". *[[https://www.eclipse.org/acceleo/documentation/|The Eclipse Foundation "Acceleo Query Language"]] - "Query and navigate in EMF models". *[[http://marketplace.eclipse.org/content/acceleo|The Eclipse Foundation, Eclipse Marketplace "Acceleo"]]. == Java Emitter Template ( JET ) == *[[http://www.eclipse.org/modeling/m2t/?project=jet|The Eclipse Foundation "Eclipse Modeling ( M2T )"]] - "JET is typically used in the implementation of a "code generator". A code-generator is an important component of Model Driven Development (MDD)". *[[http://www.eclipse.org/articles/Article-JET/jet_tutorial1.html|The Eclipse Foundation "JET Tutorial Part 1 (Introduction to JET)"]]. *[[http://www.vogella.com/tutorials/EclipseJET/article.html|Vogella Tutorials "Java Emitter Template (JET)"]]. *[[http://wiki.eclipse.org/EMF/ExtendingCodeGeneration|The Eclipse Foundation Wiki "EMF/ExtendingCodeGeneration"]]. == Xtend == *[[http://www.eclipse.org/Xtext/documentation/103_domainmodelnextsteps.html|The Eclipse Foundation "15 Minutes Tutorial - Extended", "Writing a Code Generator With Xtend"]], [[https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.xtext.doc%2Fcontents%2F030-tutorial-next-steps.html|The Eclipse Foundation "15 Minutes Tutorial - Extended", "Writing a Code Generator With Xtend"]]. *[[http://www.packtpub.com/mapt/book/application_development/9781786464965/5/ch06lvl1sec27/writing-a-code-generator-in-xtend|PackedPub "Writing a code generator in Xtend - Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition"]] - "Writing a code generator in Xtend". *[[http://www.eclipsecon.org/na2016/session/creating-standalone-generator-xtend.html|EclipseCon "Creating a Standalone Generator with Xtend"]]. *[[http://cohesionforce.github.io/reveal/|GitHub.io "Cohesion Force" - "Code Generation with Eclipse XTend"]]. *[[http://www.github.com/CohesionForce/reveal|GitHub "CohesionForce/reveal"]]. *[[http://www.github.com/CohesionForce/dis-toolkit|GitHub "CohesionForce/dis-toolkit"]] - "Distributed Interactive Simulation (DIS) Toolkit". *[[http://www.dietrich-it.de/xtext/2011/07/29/xtend2-code-generators-with-non-xtext-models.html| "Xtend2 Code Generators with Non-Xtext Models"]]. * == Resources == *Generations can be built using by the many tool that can generate code from EMF models. ==== Intentional Domain Workbench ( discontinued ) ==== *The legacy discontinued, once commercial "Intentional Domain Workbench" by [[http://www.intentsoft.com/|Intentional Software]]. *[[http://blogs.microsoft.com/blog/2017/04/18/microsoft-acquire-intentional-software-expand-future-productivity-capabilities/|Microsoft Blog "Microsoft to acquire Intentional Software to expand future productivity capabilities"]], 2017-04-18. *[[http://www.intentsoft.com/intentional-technology/presentations/|Intentional Software "Presentations and Demos"]]. ==== JetBrains MPS ( projectional Editor ) ==== === The Tool === *The OpenSource IDE [[http://www.jetbrains.com/mps/|JetBrains MPS]]. *[[http://git.jetbrains.org/mps/mps.git|JetBrains Git "mps"]], [[http://www.github.com/JetBrains/MPS|GitHub "JetBrains/MPS"]] *[[http://blog.jetbrains.com/mps/2010/08/mps-source-code-repository-is-publicly-available-now/|JetBrains Blog "MPS source code repository is publicly available now"]], 2010-08. *[[http://www.twitter.com/jetbrains_mps|Twitter "JetBrains MPS, @jetbrains_mps"]]. *[[http://www.jetbrains.com/mps/documentation/|JetBrains "Educational Resources"]]. *Books. *Conceptual Overview. *Introductory Tutorials. *Advanced Topics. *MPS Use Cases and Other Related Reading. *[[http://confluence.jetbrains.com/display/MPS/|JetBrains Wiki "JetBrains MPS Space"]]. *[[http://confluence.jetbrains.com/display/MPSD20173/MPS+User's+Guide|JetBrains Wiki "MPS User's Guide"]]. *[[http://confluence.jetbrains.com/display/MPSD20173/FAQ|JetBrains Wiki "MPS User's Guide / FAQ"]]. *[[http://confluence.jetbrains.com/display/MPS/MPS+Tutorials+Page|JetBrains Wiki "MPS Tutorials Page"]]. *[[http://confluence.jetbrains.com/display/MPS/MPS+Languages+Repository|JetBrains Wiki ""MPS Languages Repository]]. *Java (MPS BaseLanguage). *XML (jetbrains.mps.core.xml). *Ant (generated from the BuildLanguage). *Videos. *[[http://www.youtube.com/user/JetBrainsTV|YouTube Channel "JetBrainsTV"]]. *[[http://www.youtube.com/user/JetBrainsTV/playlists|YouTube Playlists of "JetBrainsTV"]]. *[[http://www.youtube.com/watch?v=5dldSNaibrA&list=PLQ176FUIyIUY9rAcAH6MNOxJqGfau0Jb1|YouTube, JetBrainsTV - Playlists "Introduction to JetBrains MPS"]] ( updated ). *[[http://www.youtube.com/watch?v=xXmYE9HrooM|YouTube "Creating your first language in JetBrains MPS"]]. *[[http://www.youtube.com/watch?v=bw8X3wkBUr8|YouTube "JetBrains MPS: Projectional Editing in Domain-Specific Languages"]]. *[[http://www.youtube.com/watch?v=OZ9xitypJZI|YouTube "Why mbeddr.com uses JetBrains MPS"]]. *[[http://www.youtube.com/watch?v=T1RErEvbgRc|YouTube "The introductory Calculator Language Tutorial"]] - "This screncast provides an alternative way to learn MPS. Folowing the steps described in the on-line introductory Calculator MPS Tutorial ( [[http://www.jetbrains.com/help/mps/mps-calculator-language-tutorial.html|JetBrains "MPS Calculator Language Tutorial"]] ) the screencast will guide you through the process of building a Calculator definition language and show you how to use the basic MPS concepts, such as the structure, the editor and the generator. If you find the on-line tutorial a bit dry and difficult to follow, this screencast may help you get over it. Try it out!". *[[http://www.youtube.com/watch?v=pVIywLXDuRo|YouTube "Voice Menu - a concrete example of MPS"]]. === Resources === *[[http://www.newswire.ca/news-releases/jetbrains-mps-adopted-by-yet-another-open-source-project-509768011.html| "JetBrains MPS Adopted by Yet Another Open Source Project"]], 2012 - "itemis AG chooses JetBrains MPS to develop a powerful IDE for embedded software development based on C, DSLs and formal verification". *[[http://www.heise.de/newsticker/meldung/Meta-Programming-System-von-JetBrains-ermoeglicht-Language-Oriented-Programming-188488.html|heise Newsticker "Meta Programming System von JetBrains ermöglicht Language Oriented Programming"]], 2008. *[[http://en.wikipedia.org/wiki/JetBrains_MPS|EN.Wikipedia "JetBrains MPS"]], [[http://de.wikipedia.org/wiki/JetBrains_MPS|DE.Wikipedia "JetBrains MPS"]]. *MPS is a projectional editor. *Experts told me, that MPS supports the full set of context-free grammars ( as there is no grammar, no parser, no grammar class with projectional editors ). ==== Microsoft Visual Studio Domain-Specific Language Tools ( DSL Tools ) ==== *[[http://docs.microsoft.com/en-gb/visualstudio/modeling/overview-of-domain-specific-language-tools|Microsoft Visual Studio Docs "Overview of Domain-Specific Language Tools"]] for VS2017. *[[http://msdn.microsoft.com/en-us/library/bb126327.aspx|Microsoft Developer Network "Overview of Domain-Specific Language Tools"]] for VS2015. *[[http://msdn.microsoft.com/de-de/library/bb126259.aspx|Microsoft Developer Network "Modeling SDK für Visual Studio - domänenspezifische Sprachen"]]. *[[http://msdn.microsoft.com/en-us/library/ee943825.aspx|Microsoft Developer Network "Getting Started with Domain-Specific Languages"]]. ==== MontiCore ==== *The OpenSource [[http://www.monticore.de/|RWTH Aachen, Chair of Software Engineering "The MontiCore Language Workbench"]]. *[[http://www.github.com/MontiCore|GitHub "MontiCore"]]. ==== Obeo Designer / Eclipse Sirius, with Graphical Modeling ==== *[[http://www.obeodesigner.com/|Obeo Designer]]. *The free [[http://www.obeodesigner.com/en/download|Obeo Designer Community Edition]]. *The OpenSource [[http://www.obeo.fr/en/products/eclipse-sirius|Eclipse Sirius]] - "A graphic model is worth a thousand words". *[[http://code.google.com/archive/a/eclipselabs.org/p/lwc11-obeodesigner|Google Code Archive "lwc11-obeodesigner"]]. ==== Rascal ==== *[[http://www.rascal-mpl.org/|Rascal Metaprogramming Language]]. ==== Spoofax Language Workbench ( formerly: Stratego/XT ) ==== === The Tool === *[[http://www.spoofax.org/|Spoofax]]. *[[http://www.metaborg.org/|The Spoofax Language Workbench ( metaborg.org )]]. *[[http://www.metaborg.org/en/latest/source/langdev/meta/lang/aterm/|The Spoofax Language Workbench "Abstract Syntax with ATerms"]]. *[[http://www.strategoxt.org/|Stratego/XT]] - "Stratego/XT is now part of the Spoofax Language Workbench, which provides an Eclipse plugin for developing SDF and Stratego, and creating Eclipse IDE plugins for your own language" *[[http://strategoxt.org/Spoofax|The Spoofax Language Workbench]]. *[[http://www.github.com/metaborg/|GitHub "Metaborg"]]. *[[http://web.archive.org/web/*/http://www.syntax-definition.org/|Archive.org "Syntax Definition Formalism ( SDF )"]]. *Experts told me, that the parser GLR and so the GLR-based Spoofax support the full set of context-free grammars. *[[http://www.gnu.org/software/bison/manual/html_node/GLR-Parsers.html||GNU "Bison 3.0.5", Chapter "1.5 Writing GLR Parsers"]]. *[[http://en.wikipedia.org/wiki/GLR_parser|EN.Wikipedia "GLR parser"]], [[http://de.wikipedia.org/wiki/Tomita-Parser|DE.Wikipedia "Tomita-Parser"]]. === Model Transformation Technology === *Spoofax is Model Transformation of the Spoofax Language Workbench. ==== Whole Platform ==== *[[http://whole.sourceforge.io/|SourceForge.io "Whole Platform"]], [[http://www.sourceforge.net/projects/whole/|SourceForege "Whole Platform"]], [[http://whole.sourceforge.net/|SourceForege "Whole Platform"]]. *[[http://www.github.com/wholeplatform|GitHub "Whole Platform Project"]]. *[[http://www.github.com/wholeplatform/whole-examples|GitHub "wholeplatform/whole-examples"]]. *Collection of LWL and CG assignment solutions. *[[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.cg12|GitHub "wholeplatform/whole-examples/tree/master/org.whole.crossexamples.cg12"]]. *[[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.cg13|GitHub "wholeplatform/whole-examples/tree/master/org.whole.crossexamples.cg13"]]. *[[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc11|GitHub "wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc11"]]. *[[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc13|GitHub "wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc13"]]. *[[http://www.github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc14|GitHub "wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc14"]]. *[[http://github.com/wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc16|GitHub "wholeplatform/whole-examples/tree/master/org.whole.crossexamples.lwc16"]]. ==== Xtext ==== === The Tool === *[[http://www.eclipse.org/downloads/packages/release/photon/r/eclipse-ide-java-and-dsl-developers|Eclipse "Eclipse IDE for Java and DSL Developers"]]. *"The essential tools for Java and DSL developers, including a Java & Xtend IDE, a DSL Framework (Xtext), a Git client, XML Editor, and Maven integration". *"This package includes: Xtext". *[[http://www.eclipse.org/modeling/tmf/|Eclipse Textual Modeling Framework]]. *[[http://www.eclipse.org/Xtext/|Eclipse "XText"]] - "Language Development Framework". "With Xtext you can easily create your own programming languages and domain-specific languages (DSLs)". *[[http://www.eclipse.org/Xtext/community/|Eclipse Xtext Community]] - Xtext projects. *Webinar [[http://live.eclipse.org/node/886|Sven Efftinge, Jan Koehnlein "Xtext - A Language Development Framework"]]. *Webinar [[http://live.eclipse.org/node/705|Sven Efftinge, Heiko Behrens "Xtext: Developing Domain Specific Languages"]]. *[[http://www.eclipse.org/community/eclipse_newsletter/2014/august/article1.php|Eclipse Newsletter "Developing Domain-Specific Languages with Xtext"]]. *[[http://vimeo.com/user2817486|vimeo "Xtext Team"]]. *[[http://vimeo.com/user2817486/videos/|vimeo "Xtext Team", Videos]]. *[[http://vimeo.com/8260921|vimeo "Xtext Team", Video "Xtext in less than a minute"]]. *[[http://en.wikipedia.org/wiki/Xtext|EN.Wikipedia "Xtext"]], [[http://de.wikipedia.org/wiki/Xtext|DE.Wikipedia "Xtext"]]. *[[http://xtext.itemis.com/|itemis AG "XText"]] - "Experts in Language Engineering: Passion for Xtext". *[[http://blogs.itemis.com/|itemis AG Blog]]. *[[http://blogs.itemis.com/en/in-five-minutes-to-transitive-imports-within-a-dsl-with-xtext|itemis AG Blog "In five minutes to transitive imports within a DSL with Xtext"]]. *[[http://www.openarchitectureware.org/pub/documentation/4.3.1/html/contents/index.html|openArchitectureWare User Guide]]. *[[http://www.openarchitectureware.org/pub/documentation/4.3.1/html/contents/xtext_tutorial.html|openArchitectureWare "Xtext Tutorial"]]. === Libraries === == Xsemantics == *[[http://xsemantics.sourceforge.net/|SourceForge "Xsemantics - a DSL for writing rules for Xtext languages"]], [[http://www.sourceforge.net/projects/xsemantics/|SourceForge "Xsemantics - a DSL for writing rules for Xtext languages"]]. == xtext-typesystem == *[[http://code.google.com/archive/a/eclipselabs.org/p/xtext-typesystem|Google Code "xtext-typesystem"]]. *[[http://www.itemis.com/en/xtext/|itemis AG "xText"]] - "itemis is the originator of the Eclipse Xtext framework. We are passionate in supporting the Eclipse and Xtext community, developing the framework continuously further and creating the perfect DSL for our customers. Xtext is open source and completely free to use – but with itemis you can be faster and more successful" *[[http://www.eclipse.org/Xtext/download.html|itemis AG - Download "xText"]]. == xTypes == *[[http://xtypes.sourceforge.net/|SourceForge "XTypeS"]], [[http://www.sourceforge.net/projects/xtypes/|SourceForge "XTypeS"]]. *[[http://www.lorenzobettini.it/|LorenzoBettini]]. *[[http://github.com/LorenzoBettini|GitHub "LorenzoBettini"]]. == Resources == *[[http://www.oiloftrop.de/code-research/introducing-type-systems-in-xtext-languages/|Reiner Jung - My Research, Coding, and other Random Stuff "Introducing Type-Systems to Xtext-Languages"]] *Markus Völter. *[[http://www.infoq.com/articles/xtext_ts|InfoQ, Markus Völter "Xtext/TS - a Typesystem Framework for Xtext"]], 2011. *[[http://www.youtube.com/watch?v=cVMCTrSBwtU|YouTube, Markus Völter "Xtext Typesystem Quick Intro"]]. === Model Transformation Technology === == ATL == *[[http://www.eclipse.org/atl/|Eclipse "ATL"]] - "A model transformation technology". == Query View Transformation ( QVT ) == *[[http://en.wikipedia.org/wiki/QVT|EN.Wikipedia "QVT"]], [[https://de.wikipedia.org/wiki/MOF_QVT|DE.Wikipedia "MOF QVT"]]. === Code Generators === *Since Xtext is based on EMF, generations can be built using any tool that can generate code from EMF models. ==== Resources ==== *By appropriate modeling, Xtext can ask [[http://www.graphviz.org/|Graphviz]] to plot diagrams ( e.g. UML diagrams ) for use in external documents. *Experts told me, that the parser ANTLR and so the ANTLR-basesd XTEXT don´t support the full set of context-free grammars. *[[http://www.mail-archive.com/emftext-users@mail-st.inf.tu-dresden.de/msg00354.html|Mailing List "EMFText-Users", Thread "Comparing EMFText with XText"]]. ===== Minimalistic Languages ===== ==== Brainfuck ==== *[[http://en.wikipedia.org/wiki/Brainfuck|EN.Wikipedia "Brainfuck"]], [[http://de.wikipedia.org/wiki/Brainfuck|DE.Wikipedia "Brainfuck"]]. ==== FORTH - Concatenative & Tacit Programming Language to write your own Domain Specific Language ==== *See [[forth.html|FORTH 1/6]]. ==== Unbounded Register Machine (URM) ==== *[[http://www.youtube.com/watch?v=VNtAtyzOPAM|YouTube "Meet the World's Smallest Computer Language - TCF2022, track 5"]]. ===== Literature ===== ==== Compiler Design ==== === Books === *[[http://www.amazon.de/exec/obidos/ASIN/3642074782/hemmerling-21|Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman "Compilers: Principles, Techniques, and Tools"]], 2006 - Second edition. "known to professors, students, and developers worldwide as the 'Dragon Book', is available in a new edition" *[[http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools|EN.Wikipedia "Compilers: Principles, Techniques, and Tools"]], [[http://de.wikipedia.org/wiki/Compiler:_Prinzipien,_Techniken_und_Werkzeuge|EN.Wikipedia "Compiler: Prinzipien, Techniken und Werkzeuge"]]. *[[http://www.github.com/muthukumarse/books/blob/master/Dragon%20Book%20Compilers%20Principle%20Techniques%20and%20Tools%202nd%20Edtion.pdf|GitHub "muthukumarse / books / Dragon Book Compilers Principle Techniques and Tools 2nd Edtion.pdf"]]. *[[http://archive.org/details/dragonbook0000unse|Internet Archive "Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman "Compilers: Principles, Techniques, and Tools"]]. *[[http://www.amazon.de/exec/obidos/ASIN/0128154128/hemmerling-21|Keith D. Cooper, Linda Torczon "Engineering a Compiler"]], 3rd edition. *[[http://www.r-5.org/files/books/computers/compilers/writing/Keith_Cooper_Linda_Torczon-Engineering_a_Compiler-EN.pdf|R-5 "Keith D. Cooper, Linda Torczon 'Engineering a Compiler'"]], 2nd edition. *[[http://www.annas-archive.org/md5/8029c566492118e1baebc10a7d9c1ab2|Anna’s Archive "Engineering a Compiler. Morgan Kaufmann, 3, 2022 Keith D. Cooper, Linda Torczon"]], [[http://www.annas-archive.org/slow_download/8029c566492118e1baebc10a7d9c1ab2/0/1|Anna’s Archive "Engineering a Compiler. Morgan Kaufmann, 3, 2022 Keith D. Cooper, Linda Torczon" ( Download from partner website )]], 3rd edition. === Resources === *The book was mentioned in the movie "Hackers" ( [[http://en.wikipedia.org/wiki/Hackers_(film)|EN.Wikipedia "Hackers (film)"]], [[http://de.wikipedia.org/wiki/Hackers_%E2%80%93_Im_Netz_des_FBI|DE.Wikipedia "Hackers – Im Netz des FBI"]] ) of 1995, at 23:20. *[[http://news.ycombinator.com/item?id=14487961|Hacker News "Don't read the dragon book if you're interested in compilers"]], 2017. *[[http://www.reddit.com/r/Compilers/comments/ldza9h/reading_the_dragon_book/|reddit "r/Compilers", "Reading the dragon book"]]. *"'Engineering a compiler' is far better than the dragon book". *[[http://www.reddit.com/r/Compilers/comments/pjn25h/how_does_engineering_a_compiler_by_keith_cooper/|reddit "r/Compilers", "How does 'Engineering a Compiler' (by Keith Cooper and Linda Torczon) compare to the Dragon Book (Principles of Compiler Design by Alfred Aho and Jeffery Ulman)?"]]. ==== Domain-Specific Languages ==== *Book [[http://www.amazon.de/exec/obidos/ASIN/1786464969/hemmerling-21|Lorenzo Bettini "Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition"]], 2016. *[[http://www.lorenzobettini.it/|Lorenzo Bettini]]. *The accompanying website [[https://www.packtpub.com/application-development/implementing-domain-specific-languages-xtext-and-xtend|PACKT "Implementing Domain-Specific Languages with Xtext and Xtend"]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/3642074782/hemmerling-21|B. Berard, M. Bidoit, A. Finkel, F. Laroussinie, A. Petit, L. Petrucci, P. Schnoebelen "Systems and Software Verification: Model-Checking Techniques and Tools"]], 2001 / 2010 - Literature suggestion by Markus Völter. TIB has 2001 issue, "T 01 B 3538". *Fabien Campagne. *Book [[http://www.amazon.de/exec/obidos/ASIN/153053335X/hemmerling-21|Fabien Campagne "1: The MPS Language Workbench Volume I: The Meta Programming System"]], 2016. *Book [[http://www.amazon.de/exec/obidos/ASIN/1532805373/hemmerling-21|Fabien Campagne "2: The MPS Language Workbench Volume II: The Meta Programming System"]], 2016. *Accompanying website [[http://www.campagnelab.org/publications/our-books/|Campagne Laboratory "Books"]], [[http://books.campagnelab.org/|Campagne Laboratory "Books"]]. *Warnung: Both books just describe the software development tool. This is no introduction for implementing DSLs with MPS. The books don´t contain any course material. There is no teaching, no how-to. *Book [[http://www.amazon.de/exec/obidos/ASIN/0321712943/hemmerling-21|Martin Fowler "Domain-Specific Languages"]]. *Accompanying website [[http://www.martinfowler.com/books/dsl.html|Martin Fowler "Domain Specific Languages"]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/1935182455/hemmerling-21|Debasish Ghosh "Dsls in Action"]]. *Terence Parr. *Book [[http://www.amazon.de/exec/obidos/ASIN/193435645X/hemmerling-21|Terence Parr "Language Implementation Patterns: Techniques for Implementing Domain-Specific Languages"]], 2010. *Book [[http://www.amazon.de/exec/obidos/ASIN/1934356999/hemmerling-21|Terence Parr "The Definitive ANTLR 4 Reference"]], 2013. *[[http://www.dslbook.org/|Markus Völter - Ingenieurbüro für Softwaretechnologie "DSLBook.org"]]. *Book [[http://www.amazon.de/exec/obidos/ASIN/1481218581/hemmerling-21|Markus Voelter "DSL Engineering: Designing, Implementing and Using Domain-Specific Languages"]], 2013. *The PhD thesis [[http://www.voelter.de/data/books/GenericToolsSpecificLanguages-1.0-web.pdf|Markus VOELTER "Generic Tools, Specific Languages"]] ( 299 pages PDF ). *[[http://www.youtube.com/user/schogglad|YouTube "Markus Völter"]]. ===== Blogs ===== *Blog [[http://blog.efftinge.de/|Sven Efftinge]] - Xtext developer. *Blog [[http://www.medium.com/@dslmeinte|Medium "Meinte Boersma"]]. *Blog [[http://dslmeinte.wordpress.com/|Meinte's DSL Blog. My thoughts on DSLs, model-driven software engineering]] ( - 2014-10-04 ). *Blog [[http://blogs.itemis.de/stundzig/|Steffen Stundzig]] - Xtext user. *Blog [[http://kthoms.wordpress.com/|Karsten Thoms]] - Xtext user. *Blog [[http://blog.openmodeling.nl/|Jos Warmer's Blog]]. ===== Resources ===== *DZONE. *[[http://www.dzone.com/articles/creating-internal-dsls-java|DZONE "Creating Internal DSLs in Java & Java 8. Adopting Martin Fowler's approach to domain-specific language"]]. *[[http://www.dzone.com/articles/creating-external-dsls-using|DZONE "Creating External DSLs using ANTLR and Java"]]. *[[http://www.dzone.com/articles/groovy-dsl-scratch-2-hours|DZONE "A Groovy DSL from Scratch in Two Hours. Through DZone I found Architecture Rules, a lovely little framework that abstracts JDepend. Architecture Rules is configured via its own XML schema"]]. *[[http://www.dzone.com/articles/building-a-dsl-in-java|DZONE "Building an Intuitive DSL in Java. A DSL is more than chaining a few methods together. A great DSL should be human readable, which means considering word order and consistency"]]. *[[https://www.heise.de/developer/artikel/Werkzeuge-fuer-domaenenspezifische-Sprachen-227190.html|heise "Werkzeuge für domänenspezifische Sprachen"]], 2009. *[[http://www.infoq.com/articles/internal-dsls-java|InfoQ "An Approach to Internal Domain-Specific Languages in Java"]]. *Java World. *[[http://www.javaworld.com/article/2077865/core-java/core-java-creating-dsls-in-java-part-1-what-is-a-domain-specific-language.html|Java World "Creating DSLs in Java, Part 1: What is a domain-specific language?"]]. *[[http://www.javaworld.com/article/2077873/core-java/core-java-creating-dsls-in-java-part-2-fluency-and-context.html|Java World "Creating DSLs in Java, Part 2: Fluency and context"]]. *[[http://www.javaworld.com/article/2077891/scripting-jvm-languages/scripting-jvm-languages-creating-dsls-in-java-part-3-internal-and-external-dsls.html|Java World "Creating DSLs in Java, Part 3: Internal and external DSLs"]]. *[[http://www.javaworld.com/article/2077904/scripting-jvm-languages/scripting-jvm-languages-creating-dsls-in-java-part-4-where-metaprogramming-matters.html|Java World "Creating DSLs in Java, Part 4: Where metaprogramming matters"]]. *[[http://cbast.home.xs4all.nl/mvg/|Modeling Value Group]]. *[[http://www.tomassetti.me/domain-specific-languages/|Federico Tomassetti "The complete guide to (external) Domain Specific Languages"]]. *[[http://www.tratt.net/laurie/|Laurence Tratt]]. *[[http://www.tratt.net/laurie/blog/archive.html|Laurence Tratt "All blog entries"]]. *[[http://www.tratt.net/laurie/blog/entries/parsing_the_solved_problem_that_isnt.html|Laurence Tratt "Parsing: The Solved Problem That Isn't"]], 2011. *Wikipedia. *[[http://en.wikipedia.org/wiki/Domain-specific_language|EN.Wikipedia "Domain-specific language"]], [[http://de.wikipedia.org/wiki/Dom%C3%A4nenspezifische_Sprache|DE.Wikipedia "Domänenspezifische Sprache"]]. *[[http://en.wikipedia.org/wiki/Type_system|EN.Wikipedia "Type system"]], [[http://de.wikipedia.org/wiki/Typisierung_(Informatik)|DE.Wikipedia "Typisierung (Informatik)"]]. *[[http://en.wikipedia.org/wiki/Unification_(computer_science)|EN.Wikipedia "Unification (computer science)"]], [[http://de.wikipedia.org/wiki/Unifikation_(Logik)|DE.Wikipedia "Unifikation (Logik)"]]. *[[http://xrds.acm.org/blog/2013/12/on-domain-specific-language-usage/|XRDS "On Domain-Specific Language Usage"]] - "Regular Expressions, XML, SQL, XPath, XSLT, RTF, HTML". ===== Forums, Newsgroups ===== *[[http://www.eclipse.org/forums/index.php/i/5/|Eclipse Community Forums "Modeling"]]. *[[http://www.eclipse.org/forums/index.php/f/27/|Eclipse Community Forums "TMF (Xtext)"]]. *[[http://www.eclipse.org/forums/index.php/t/683186/|Eclipse Community Forums "TMF (Xtext)", Thread "Typesystem for own DSL"]]. *[[http://groups.google.com/forum/#!forum/languagewb|Google Groups "Language Workbench Challenge"]]. *[[http://www.stackoverflow.com/questions/tagged/dsl|StackOverflow - Questions tagged with "dsl"]]. {{tag>domain specific language languages "domain specific language" "domain specific languages" "language workbench" "language workbenches" workbench workbenches}}