building dsls with language workbenches -...
TRANSCRIPT
![Page 1: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/1.jpg)
ThoughtWorksThoughtWorks
NEAL FORD software architect / meme wrangler
ThoughtWorks
[email protected] 3003 Summit Boulevard, Atlanta, GA 30319
www.nealford.com
www.thoughtworks.com
memeagora.blogspot.com
building DSLs with language workbenches
![Page 2: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/2.jpg)
ThoughtWorks
![Page 3: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/3.jpg)
generation templates
language workbenches
building grammars or pseudo-grammars
using workbench DSLs
generation
overview
![Page 4: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/4.jpg)
Xtext (openArchitectureWare)
a tool that supports language oriented programming
Intentional Software (Charles Simonyi)
MPS (JetBrains)
language workbenches
![Page 5: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/5.jpg)
class Foo { private int id;. . .. . .
}
Editable Representation
Storage RepresentationExecutable
Representation
Parse
Compile
compilation since cs-101
![Page 6: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/6.jpg)
![Page 7: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/7.jpg)
first java ide to edit the abstract syntax directly
enables refactoring
“post- ide’s”
![Page 8: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/8.jpg)
workbenchesclass Foo { private int id;. . .. . .
}
Executable
Representation
Workbench
Versioning Storage
Editable Representation
Storage Representation
TabTabTab
Document Window
Label Menu
Text Field
Text Field
Text Field
Text Field
Text Field
Text Field
Label Label•
Label Text Field
Projections
![Page 9: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/9.jpg)
grammars
![Page 10: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/10.jpg)
Ms. Grant’s secret panel
![Page 11: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/11.jpg)
the DSLevents doorClosed D1CL drawOpened D2OPend
commands unlockPanel PNUL lockPanel PNLKend
![Page 12: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/12.jpg)
the grammarlist : eventList commandList;eventList : 'events' eventDec* 'end';eventDec : identifier identifier;commandList : 'commands' commandDec* 'end';commandDec : identifier identifier;
events doorClosed D1CL drawOpened D2OPend
commands unlockPanel PNUL lockPanel PNLKend
![Page 13: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/13.jpg)
you provide a grammar in their format
framework/tool for development of external textual DSLs
based on openArchitectureWare
Xtext produces: ANTLR grammar, parser, abstract syntax tree meta-model, and Eclipse editor
![Page 14: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/14.jpg)
Xtext project
![Page 15: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/15.jpg)
Xtext artifacts
DSL source
generated source
meta-data for editor plug-ineditor plug-in
generators
![Page 16: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/16.jpg)
![Page 17: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/17.jpg)
ANTLR grammar
![Page 18: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/18.jpg)
ANTLR grammar
. . .
![Page 19: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/19.jpg)
code generation
![Page 20: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/20.jpg)
templates
![Page 21: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/21.jpg)
template file
![Page 22: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/22.jpg)
template
![Page 23: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/23.jpg)
main()
![Page 24: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/24.jpg)
templates
![Page 25: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/25.jpg)
eclipse editor
![Page 26: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/26.jpg)
heavily Eclipse based (editors, project structure, etc.)
most mature of the text-based DSL tools
still extricating itself from openArchitectureware & MDA background
nice editor projection (acts like source file)
efficient generation of DSL, grammar, code generation, & templates
Xtext
![Page 27: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/27.jpg)
![Page 28: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/28.jpg)
...but the other guys do the same thing
competition is brutal!
incentives to encourage repeat customers...
easy to define & change
flexible business rules
bakery life
![Page 29: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/29.jpg)
establishing profiles
![Page 30: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/30.jpg)
discounts
![Page 31: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/31.jpg)
discount
![Page 32: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/32.jpg)
discount implementation
![Page 33: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/33.jpg)
getDiscount()
![Page 34: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/34.jpg)
used internally to build new products
internal project by JetBrains
based on lessons learned with IntelliJ
actively used now for 3+ years
created by Sergey Dmitriev & Konstantin Solomatov
![Page 35: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/35.jpg)
![Page 36: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/36.jpg)
new MPS project
![Page 37: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/37.jpg)
also editors, code generators
fundamental building block
like a class: data, behavior, encapsulation
properties, events, methods, and links
implemented in base language
concepts
![Page 38: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/38.jpg)
concept declaration
![Page 39: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/39.jpg)
concept editor
![Page 40: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/40.jpg)
concept editor
![Page 41: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/41.jpg)
smart help
![Page 42: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/42.jpg)
discount
![Page 43: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/43.jpg)
reduction rule mapping
![Page 44: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/44.jpg)
reduction template
![Page 45: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/45.jpg)
discount template
![Page 46: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/46.jpg)
using the editor
![Page 47: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/47.jpg)
code generation
![Page 48: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/48.jpg)
![Page 49: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/49.jpg)
grammar?
encapsulated within
![Page 50: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/50.jpg)
refactoring
![Page 51: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/51.jpg)
find usages
![Page 52: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/52.jpg)
found usages
![Page 53: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/53.jpg)
MPS is written in
MPS
![Page 54: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/54.jpg)
![Page 55: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/55.jpg)
composition
![Page 56: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/56.jpg)
composing DSLs
![Page 57: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/57.jpg)
comparisonsXtext MPS Intentional
grammar EBNF/antlr encapsulated ?
environment Eclipse MPS ?
code generation
via Eclipse via MPS or IntelliJ
internal
projections EMF & text text-like (for now)
rich
project ecosystem
Eclipse MPS ?
availability now!open source
soonopen source
?commercial
![Page 58: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/58.jpg)
ThoughtWorks
This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.
http://creativecommons.org/licenses/by-nc-sa/2.5/
questions?
please fill out the session evaluationsslides & samples available at nealford.com
NEAL FORD software architect / meme wrangler
ThoughtWorks
[email protected] 3003 Summit Boulevard, Atlanta, GA 30319
www.nealford.com
www.thoughtworks.com
memeagora.blogspot.com
![Page 59: Building DSLs with Language Workbenches - jaoo.dkjaoo.dk/dl/jaoo-aarhus-2008/slides/NealFord_BuildingDSL.pdf · Xtext (openArchitectureWare) a tool that supports language oriented](https://reader034.vdocuments.us/reader034/viewer/2022042800/5a709f2f7f8b9aa7538c3123/html5/thumbnails/59.jpg)
resources
ThoughtWorks
MPShttp://www.jetbrains.com/mps/
Intentional Softarehttp://www.intentsoft.com/
Xtexthttp://wiki.eclipse.org/Xtext
Martin Fowler’s DSL Work in Progresshttp://martinfowler.com/dslwip/