Suche senden
Hochladen
Markus Voelter Textual DSLs
•
7 gefällt mir
•
1,733 views
D
deimos
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 78
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Introduction To MDD
Introduction To MDD
Markus Voelter
Leveraging Model-Driven Technologies for JSON Artefacts: The Shipyard Case Study
Leveraging Model-Driven Technologies for JSON Artefacts: The Shipyard Case Study
Luca Berardinelli
UML Case Tools
UML Case Tools
Ashesh R
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages
ijseajournal
DSL and EMFText
DSL and EMFText
Eclipse Day India
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
Michael Vorburger
Ateji PX for Java
Ateji PX for Java
Patrick Viry
Dotnet interview qa
Dotnet interview qa
abcxyzqaz
Empfohlen
Introduction To MDD
Introduction To MDD
Markus Voelter
Leveraging Model-Driven Technologies for JSON Artefacts: The Shipyard Case Study
Leveraging Model-Driven Technologies for JSON Artefacts: The Shipyard Case Study
Luca Berardinelli
UML Case Tools
UML Case Tools
Ashesh R
STATICMOCK : A Mock Object Framework for Compiled Languages
STATICMOCK : A Mock Object Framework for Compiled Languages
ijseajournal
DSL and EMFText
DSL and EMFText
Eclipse Day India
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
Michael Vorburger
Ateji PX for Java
Ateji PX for Java
Patrick Viry
Dotnet interview qa
Dotnet interview qa
abcxyzqaz
Xtext Best Practices
Xtext Best Practices
Sebastian Zarnekow
Paisajes Y Monumentos
Paisajes Y Monumentos
amfelisa
Day 2 2nd_weekcris
Day 2 2nd_weekcris
cristiarnau
Sustainability lab 2015/ Chimica tessile e sostenibilità
Sustainability lab 2015/ Chimica tessile e sostenibilità
franztunda
mulleres matemáticas 3
mulleres matemáticas 3
biblioxograr
Barbatii
Barbatii
Alexandru S
Chitarra Romana
Chitarra Romana
Alexandru S
Dont Hug Me
Dont Hug Me
Justin Flowers
Improving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessions
Peter Buck
Usagility
Usagility
superduperfly
Sketches for Book
Sketches for Book
caterwauler
5 top tips for compelling, relevant blog content
5 top tips for compelling, relevant blog content
Simon Young
Skanska 20111021 horizontal leadership, managing change and complexity handout
Skanska 20111021 horizontal leadership, managing change and complexity handout
Gunnar Westling
Un MóN De Sentiments
Un MóN De Sentiments
lalvar25
Survival Tips for Nonprofit Marketers
Survival Tips for Nonprofit Marketers
Kivi Leroux Miller
DÍA DE LA BANDERA
DÍA DE LA BANDERA
guestd659a7
Content4 Nuthin CSEM version
Content4 Nuthin CSEM version
Terri Bays
Mikstreet Pr-2010
Mikstreet Pr-2010
Michael Street
Interactive Marketing
Interactive Marketing
Justin Flowers
Presentation Part III
Presentation Part III
maverickrathore
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
Istvan Rath
Modeling With Eclipse @SoftShake 2011
Modeling With Eclipse @SoftShake 2011
Mickael Istria
Weitere ähnliche Inhalte
Andere mochten auch
Xtext Best Practices
Xtext Best Practices
Sebastian Zarnekow
Paisajes Y Monumentos
Paisajes Y Monumentos
amfelisa
Day 2 2nd_weekcris
Day 2 2nd_weekcris
cristiarnau
Sustainability lab 2015/ Chimica tessile e sostenibilità
Sustainability lab 2015/ Chimica tessile e sostenibilità
franztunda
mulleres matemáticas 3
mulleres matemáticas 3
biblioxograr
Barbatii
Barbatii
Alexandru S
Chitarra Romana
Chitarra Romana
Alexandru S
Dont Hug Me
Dont Hug Me
Justin Flowers
Improving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessions
Peter Buck
Usagility
Usagility
superduperfly
Sketches for Book
Sketches for Book
caterwauler
5 top tips for compelling, relevant blog content
5 top tips for compelling, relevant blog content
Simon Young
Skanska 20111021 horizontal leadership, managing change and complexity handout
Skanska 20111021 horizontal leadership, managing change and complexity handout
Gunnar Westling
Un MóN De Sentiments
Un MóN De Sentiments
lalvar25
Survival Tips for Nonprofit Marketers
Survival Tips for Nonprofit Marketers
Kivi Leroux Miller
DÍA DE LA BANDERA
DÍA DE LA BANDERA
guestd659a7
Content4 Nuthin CSEM version
Content4 Nuthin CSEM version
Terri Bays
Mikstreet Pr-2010
Mikstreet Pr-2010
Michael Street
Interactive Marketing
Interactive Marketing
Justin Flowers
Presentation Part III
Presentation Part III
maverickrathore
Andere mochten auch
(20)
Xtext Best Practices
Xtext Best Practices
Paisajes Y Monumentos
Paisajes Y Monumentos
Day 2 2nd_weekcris
Day 2 2nd_weekcris
Sustainability lab 2015/ Chimica tessile e sostenibilità
Sustainability lab 2015/ Chimica tessile e sostenibilità
mulleres matemáticas 3
mulleres matemáticas 3
Barbatii
Barbatii
Chitarra Romana
Chitarra Romana
Dont Hug Me
Dont Hug Me
Improving audience engagement in your ILTA 2011 conference sessions
Improving audience engagement in your ILTA 2011 conference sessions
Usagility
Usagility
Sketches for Book
Sketches for Book
5 top tips for compelling, relevant blog content
5 top tips for compelling, relevant blog content
Skanska 20111021 horizontal leadership, managing change and complexity handout
Skanska 20111021 horizontal leadership, managing change and complexity handout
Un MóN De Sentiments
Un MóN De Sentiments
Survival Tips for Nonprofit Marketers
Survival Tips for Nonprofit Marketers
DÍA DE LA BANDERA
DÍA DE LA BANDERA
Content4 Nuthin CSEM version
Content4 Nuthin CSEM version
Mikstreet Pr-2010
Mikstreet Pr-2010
Interactive Marketing
Interactive Marketing
Presentation Part III
Presentation Part III
Ähnlich wie Markus Voelter Textual DSLs
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
Istvan Rath
Modeling With Eclipse @SoftShake 2011
Modeling With Eclipse @SoftShake 2011
Mickael Istria
ALT
ALT
frolikat
MODIGEN: MODEL-DRIVEN GENERATION OF GRAPHICAL EDITORS IN ECLIPSE
MODIGEN: MODEL-DRIVEN GENERATION OF GRAPHICAL EDITORS IN ECLIPSE
ijcsit
How to Create Your Own Product-Modeling Environment
How to Create Your Own Product-Modeling Environment
Tim Geisler
MDD and modeling tools research
MDD and modeling tools research
Roger Xia
01 overview
01 overview
Suresh Kumar
01 overview
01 overview
Suresh Kumar
Epsilon
Epsilon
Dimitris Kolovos
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
Bahram Maravandi
Eclipse DemoCamp Toulouse 2017 - Mr. Robot : The modeling Society
Eclipse DemoCamp Toulouse 2017 - Mr. Robot : The modeling Society
melbats
Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.
Alexandro Colorado
The Economics of OptimJ
The Economics of OptimJ
Patrick Viry
Inside.Net
Inside.Net
Ganesh Samarthyam
The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelF
Markus Voelter
New microsoft office word document
New microsoft office word document
SIVAJISADHANA
New microsoft office word document
New microsoft office word document
SIVAJISADHANA
New microsoft office word document
New microsoft office word document
SIVAJISADHANA
dotNET frameworks
dotNET frameworks
nawal saad
Re-implementing Thrift using MDE
Re-implementing Thrift using MDE
Sina Madani
Ähnlich wie Markus Voelter Textual DSLs
(20)
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
mbeddr meets IncQuer - Combining the Best Features of Two Modeling Worlds
Modeling With Eclipse @SoftShake 2011
Modeling With Eclipse @SoftShake 2011
ALT
ALT
MODIGEN: MODEL-DRIVEN GENERATION OF GRAPHICAL EDITORS IN ECLIPSE
MODIGEN: MODEL-DRIVEN GENERATION OF GRAPHICAL EDITORS IN ECLIPSE
How to Create Your Own Product-Modeling Environment
How to Create Your Own Product-Modeling Environment
MDD and modeling tools research
MDD and modeling tools research
01 overview
01 overview
01 overview
01 overview
Epsilon
Epsilon
Domain Driven Design and Model Driven Software Development
Domain Driven Design and Model Driven Software Development
Eclipse DemoCamp Toulouse 2017 - Mr. Robot : The modeling Society
Eclipse DemoCamp Toulouse 2017 - Mr. Robot : The modeling Society
Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.
The Economics of OptimJ
The Economics of OptimJ
Inside.Net
Inside.Net
The Design, Evolution and Use of KernelF
The Design, Evolution and Use of KernelF
New microsoft office word document
New microsoft office word document
New microsoft office word document
New microsoft office word document
New microsoft office word document
New microsoft office word document
dotNET frameworks
dotNET frameworks
Re-implementing Thrift using MDE
Re-implementing Thrift using MDE
Mehr von deimos
Aspect Orientated Programming in Ruby
Aspect Orientated Programming in Ruby
deimos
Randy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural Principles
deimos
Remy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQuery
deimos
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
deimos
Joe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand Dwr
deimos
Aslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec Bdd
deimos
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In Groovy
deimos
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languages
deimos
Udi Dahan Intentions And Interfaces
Udi Dahan Intentions And Interfaces
deimos
Tim Mackinnon Agile And Beyond
Tim Mackinnon Agile And Beyond
deimos
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipity
deimos
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The Web
deimos
Stefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To Rest
deimos
Rod Johnson Cathedral
Rod Johnson Cathedral
deimos
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalability
deimos
Matt Youill Betfair
Matt Youill Betfair
deimos
Pete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two Systems
deimos
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
deimos
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java Platform
deimos
Neal Gafter Java Evolution
Neal Gafter Java Evolution
deimos
Mehr von deimos
(20)
Aspect Orientated Programming in Ruby
Aspect Orientated Programming in Ruby
Randy Shoup eBays Architectural Principles
Randy Shoup eBays Architectural Principles
Remy Sharp The DOM scripting toolkit jQuery
Remy Sharp The DOM scripting toolkit jQuery
Ola Bini J Ruby Power On The Jvm
Ola Bini J Ruby Power On The Jvm
Joe Walker Interactivewebsites Cometand Dwr
Joe Walker Interactivewebsites Cometand Dwr
Aslak Hellesoy Executable User Stories R Spec Bdd
Aslak Hellesoy Executable User Stories R Spec Bdd
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Building DSLs In Groovy
Venkat Subramaniam Blending Java With Dynamic Languages
Venkat Subramaniam Blending Java With Dynamic Languages
Udi Dahan Intentions And Interfaces
Udi Dahan Intentions And Interfaces
Tim Mackinnon Agile And Beyond
Tim Mackinnon Agile And Beyond
Steve Vinoski Rest And Reuse And Serendipity
Steve Vinoski Rest And Reuse And Serendipity
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Soa Rest And The Web
Stefan Tilkov Pragmatic Intro To Rest
Stefan Tilkov Pragmatic Intro To Rest
Rod Johnson Cathedral
Rod Johnson Cathedral
Mike Stolz Dramatic Scalability
Mike Stolz Dramatic Scalability
Matt Youill Betfair
Matt Youill Betfair
Pete Goodliffe A Tale Of Two Systems
Pete Goodliffe A Tale Of Two Systems
Paul Fremantle Restful SOA Registry
Paul Fremantle Restful SOA Registry
Ola Bini Evolving The Java Platform
Ola Bini Evolving The Java Platform
Neal Gafter Java Evolution
Neal Gafter Java Evolution
Kürzlich hochgeladen
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
Principled Technologies
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
Antenna Manufacturer Coco
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Delhi Call girls
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Michael W. Hawkins
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Rafal Los
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Katpro Technologies
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Igalia
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
Delhi Call girls
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Results
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Kürzlich hochgeladen
(20)
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Markus Voelter Textual DSLs
1.
Open Source Modeling
Bernd Kolb Markus Voelter b.kolb@kolbware.de voelter@acm.org http://www.kolbware.de www.voelter.de
2.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
3.
Eclipse Modeling is
the umbrella project for all things modeling that happen on the Eclipse platform: The Eclipse Modeling Project focuses on the evolution and promotion of model-based development technologies within the Eclipse community by providing a unified set of modeling frameworks, tooling, and standards implementations. Eclipse Modeling is not formally related to OMG, but implements several of their standards. It is fair to say that many leading edge modeling tools are hosted/developed at Eclipse Modeling. Everything Open Source under the Eclipse Public License © Bernd Kolb, Markus Voelter 2008
4.
The Eclipse Modeling
Framework (EMF) serves as the foundation: It provides the Ecore Metametamodel and frameworks and tools around it for tasks such as Editing Transactions Validation Query Distribution/Persistence (CDO, Net4j, Teneo) © Bernd Kolb, Markus Voelter 2008
5.
The Graphical Modeling
Framework (GMF) is used for building custom graphical editors based on meta models defined via EMF. It is currently in version 2.x Proven technology, used in many industrial-strength systems Based on Eclipse GEF The Textual Modeling Framework is used for building custom textual editors. Project is currently being set up Will be populated initially from oAW Xtext and INRIA TCS. © Bernd Kolb, Markus Voelter 2008
6.
UML 2.x: An
implementation of the UML 2 meta model based on EMF UML 2 Tools: GMF editors for the UML 2 models OCL: APIs for OCL expression syntax for implementing queries and contraints. XSD Infoset: reference library that provides an API for use with any code that examines, creates or modifies W3C XML Schema. © Bernd Kolb, Markus Voelter 2008
7.
M2M (Model-to-Model) :
delivers an extensible framework for model-to-model transformation languages. ATL: M2M language from INRIA QVT implementations M2T (Model-to-Text) : focuses on technologies for transforming models into text (code generation) JET : provides code generation framework & facilities that are used by EMF. Xpand: oAW’s code generation engine, to be part of M2T in the Ganymede release © Bernd Kolb, Markus Voelter 2008
8.
An integrated, tested,
one-stop toolkit for MDSD Version 4.2.1 is current (4.3 beta for Xtext) Proven track record in various domains & project contexts Stable, productive and helpful developer, support and user communities www.openarchitectureware.org and eclipse.org/gmt/oaw Integration with Eclipse: Uses EMF as a basis Graphical editors based on GMF All editors and tooling based on Eclipse © Bernd Kolb, Markus Voelter 2008
9.
Version 5 currently
under development: Migration of oAW Components to Eclipse Modeling proper: Xpand, Xtend, Check Model-to-Text (M2T) Xtext Textual Modeling Framework (TMF) Workflow Modeling Workflow Engine (MWE) More features New backend: a VM for M2T (and maybe more languages) Mixing Languages: Xpand, Xtend, Check in one file Xtext: Grammar Fragments and the stuff from the 4.3 beta Generic Tree/Form Editor, mixing editors Wizard Framework © Bernd Kolb, Markus Voelter 2008
10.
© Bernd Kolb,
Markus Voelter 2008
11.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
12.
A Domain Specific
Language (DSL) is a focused, processable language for describing a specific concern when building a system in a specific domain. The abstractions and notations used are tailored to the stakeholders who specify that particular concern. DSLs can be classified in many ways: Configuration vs. Customization Internal vs. External Graphical vs.textual We concentrate on external textual customization DSLs © Bernd Kolb, Markus Voelter 2008
13.
Aspects/Concerns/Viewpoints of a
system can be modeled formally, independent of others (avoiding the legacy system problem) Formal models can be processed automatically by tools (analysis/check, transformation, generation/Interpretation) potentially leading to technology independence of implementation code More efficient development More reusable systems Better software quality © Bernd Kolb, Markus Voelter 2008
14.
A big barrier
to adoption of DSLs is tool integration: how to integrate tool that stores its data in repositories? Textual DSLs completely removes this problem: Human-readable models are stored, versioned, searched and diffed like any other text file, integrating with CVS and SVN. Also, we know from working with traditional source code that text is a useful representation for even large systems. The big advantage compared to internal DSLs (in Ruby, Groovy) is that you can have DSL-specfic constraint checks and language support in editors This talk is about how leverage these advantages © Bernd Kolb, Markus Voelter 2008
15.
Sometimes it is
useful to show things graphically: Dependency Structures, Temporal Aspects, Signal Flow In this case there are several alternatives: Visualize a subset of the model, e.g. using graphviz or prefuse (typically read-only, but superb auto layouting) Use different viewpoints, some of them using graphical editor (requires cross-refs between textual and graphical models) Edit the same model textually and graphically (textual format is used as the serialization format for the graphical editor; requires writeability of textual model!) © Bernd Kolb, Markus Voelter 2008
16.
Typically textual DSLs
are build using one of the many parser generators (ANTLR, JavaCC, Lex/yacc), or even by a hand- writing a custom parser Parser: match text and try to create a parse tree Parser Generator: Generate a parser from a grammar © Bernd Kolb, Markus Voelter 2008
17.
Typically, transformed into
an Abstract Syntax Tree (AST) No whitespace, reified nodes, often binary tree The AST can be considered the model The node types of the AST act as the metamodel Programs processing the “sentence” are typically written against the AST – they usually don’t care about the parse tree © Bernd Kolb, Markus Voelter 2008
18.
Writing a parser
is non-trivial Using a parser generator makes it easier, but still not for everybody Also: out of the box, a parser generator only creates a matcher and/or a simplistic AST. You still need to Transform the model into a form that is easily processable Create an editor with syntax highlighting, code completion, etc. A lot of work! Only few people are willing to do that © Bernd Kolb, Markus Voelter 2008
19.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
20.
Xtext makes this
much more feasible. Based on an EBNF grammar it generates ANTLR3-based parser EMF-based metamodel Eclipse editor with ▪ syntax highlighting ▪ code completion ▪ customizable outline ▪ code folding ▪ real-time constraint checking Xtext is part of openArchitectureWare / Eclipse Modeling © Bernd Kolb, Markus Voelter 2008
21.
© Bernd Kolb,
Markus Voelter 2008
22.
Main Project Name:
name of language project .editor project contains editor Language Name: package name of generated meta model DSL File Extension: file extension used to associate editor nsURI: full namespace URI of the generated meta model Base Package: all code will be in or below this package Code Gen Project: See last section of this presentation © Bernd Kolb, Markus Voelter 2008
23.
© Bernd Kolb,
Markus Voelter 2008
24.
© Bernd Kolb,
Markus Voelter 2008
25.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
26.
DSL for importing
data: common P001 Voelter,Markus,*14.02.1974 A001 Grabenstrasse 4, 73033, Goeppingen problem in large enterprises V001 Futuristic Insurance,123456767 T001 49,07161,12334454 (e.g. hospitals) T001 49,171,8601869 S001 01.02.2004,IN25 S002 03.02.2004,CH52 Problem: read data like the one on S003 05.02.2004 S001 22.03.2005,NE02 the right into Java Beans S002 25.03.2005,NE04 S002 27.03.2005,NE05 S003 28.03.2004 Example is about patients, stays, P001 Somebody,Else,*23.05.1960 wards, insurance data A001 Ziegelaecker 11, 89520, Heidenheim V001 Some Other Insurance GmbH,124345 T001 49,07321,973344 Record Structure: S001 23.02.1999,IN25 S003 02.03.1999 <Type> <Fd1>,<Fd2>, … <Fdn> P001 Person,Else,*23.05.1960 A001 Ziegelaecker 11, 89520, Heidenheim V001 Some Other Insurance GmbH,124345 T001 49,07321,973344 Different Record Types have S001 23.02.1999,IN25 S003 02.03.1999 different fields © Bernd Kolb, Markus Voelter 2008
27.
Define data structures
(à la Java Beans) Entities Attributes, References (:1, :n) Define parser Checks record order Instantiates data structures Maps fields to attributes Assembles references Backend: Generate Java code for beans as well as parser © Bernd Kolb, Markus Voelter 2008
28.
© Bernd Kolb,
Markus Voelter 2008
29.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
30.
Grammar is defined in
an EBNF-like format in the Xtext editor. The editor provides code completion and constraint checking for the grammars themselves Grammar is a collection of Rules. Rules start with their name followed by : and ending with ; © Bernd Kolb, Markus Voelter 2008
31.
The Xtext generator
builds an EMF meta model from the grammar. The generated parser then instantiates the meta model from a model. Processing Xtext models is based on this meta model: all existing EMF tooling is suitable for processing. We’ll show a code gen template later © Bernd Kolb, Markus Voelter 2008
32.
Type Rule
For each rule Xtext creates a class in the metamodel Each rule property results in a property of the metaclass String Rule String rules are parsed to a String. They are in effect custom lexer rules (recognizing string patterns) Enum Rule Limited set of alternatives; mapped to an Ecore enum Native Rule A lexer rule is directly interpreted by ANTLR; mapped to a String © Bernd Kolb, Markus Voelter 2008
33.
ID STRING INT
© Bernd Kolb, Markus Voelter 2008
34.
Multiline comment Single line
comment Whitespace The content of those rules is not transformed into the meta model © Bernd Kolb, Markus Voelter 2008
35.
Reference File Reference/Import: Xtext
derives the default Linking information from here (more later) © Bernd Kolb, Markus Voelter 2008
36.
A type rule
is mapped to a metaclass in the metamodel It may contain keywords (using string literal syntax) It also contains properties which will result in properties of the respective metaclass The property type is derived from the called rule There are different kinds There are different of properties property cardinalities = (single assign) ? (0..1) += (multiple assign/add) * (0..n) ?= (boolean assign) + (1..n) nothing (1..1) © Bernd Kolb, Markus Voelter 2008
37.
© Bernd Kolb,
Markus Voelter 2008
38.
ImportSpec: Keywords:
import, ext, =, { and } Expects one occurrence of DataSection rule assigned to the dataSection property DataStructure: Expects any number of Attribute or Reference occurences and assigns them to the attributes and references property, respectively © Bernd Kolb, Markus Voelter 2008
39.
By default, execution
of rules results in a tree of data You can reference other elements via a reference rule In textual languages a reference has to be by name During linking, Xtext “dereferences” these by name-references Target’s name property is used here (customization: see later) Example: reference to a DataStructure. ID is is the lexer used for the referencing token © Bernd Kolb, Markus Voelter 2008
40.
A resource reference
can be used to import another model file (typically of the same DSL) When customizing e.g. content assist, Xtext automatically provides a global view on the contents of all imported files © Bernd Kolb, Markus Voelter 2008
41.
A type rule
can be abstract An abstract type rule is basically a collection of OR-ed alternatives: R1 | R2 | R3 Mapped to an abstract metaclass The or-ed alternatives become concrete subclasses Common properties of the alternatives are lifted into the abstract superclass The same rule can be or-ed in several abstract rules in which case the metaclass has several superclasses. © Bernd Kolb, Markus Voelter 2008
42.
Property is the abstract
rule. Can be a Reference or an Attribute The DataStructure has a collection of Properties, referencing the abstract rule In the meta model, name has been be lifted, type has not © Bernd Kolb, Markus Voelter 2008
43.
String rules are
lexer rules (i.e. used to define rules for custom character sequences) Declared via the String keyword String rules can be composed from other lexer rules. Other String rules Built-in lexer rules (e.g. ID) Native rules (see Xtext Reference Manual) © Bernd Kolb, Markus Voelter 2008
44.
A Enum Rule
is used to define a limited set of defined alternatives It is mapped to an Enum in the metamodel It is declared via the Enum keyword and contains Enum Literals An Enum Literal has a token name and a string representation It can be used just like any other rule. © Bernd Kolb, Markus Voelter 2008
45.
A native rule
contains a string which is passed to ANTLR without further processing it. It is typically used to define lexer rules that cannot be expressed using Xtext syntax E.g. whitespace-aware lexer rules, such as define custom comment syntax It is declared via the Native keyword The example introduces a comment (# till end of line) that is preserved into the model © Bernd Kolb, Markus Voelter 2008
46.
As a default,
Xtext is used to define grammars and derive the meta model (the ecore file) from this grammar. You start with the concrete syntax. However, sometimes you want define a textual grammar for an existing meta model. To do this, you have to import the existing meta model: You can then associate the rules with an exsiting meta class: © Bernd Kolb, Markus Voelter 2008
47.
In case all
of your rules refer to meta classes in existing meta models, you do not need any meta model generation: use preventMMGeneration One of the imported meta models may be imported without an alias. if rule name and meta class name are the same, you do not have to use the explicit meta class reference ([…]) © Bernd Kolb, Markus Voelter 2008
48.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
49.
OCL-like expression language
used throughout oAW Can be used in constraint checks, model transformations and generators Add “methods” to meta types (Java calls are possible if necessary) path expressions, set operations, (some) higher order functions Polymorphism (multiple dispatch) Tool support (syntax highlighting, code completion, debugger) © Bernd Kolb, Markus Voelter 2008
50.
Uses the oAW
Check language, based on Xtend Used to validate the static semantics of the models Report Warnings and Errors Based completely on the generated meta model, no concrete syntax hassles Tool support (syntax highlighting, code completion, …) © Bernd Kolb, Markus Voelter 2008
51.
The constraints defined for
the language are evaluated in the editor on the fly. Constraints can also be checked as part of a work- flow that processes the models. © Bernd Kolb, Markus Voelter 2008
52.
Xtext supports the
customization of the Outline View structure and icons/labels Labels and icons are changed by overriding label(…) and image(…) for your meta types. Actual image files (.gif) go into editor project’s icons directory © Bernd Kolb, Markus Voelter 2008
53.
Press Ctrl-O to
show the outline as a pop-up You can then start typing to filter the visible elements by name. Pressing enter on any element will navigate to the respective element. © Bernd Kolb, Markus Voelter 2008
54.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
55.
By default, the
structure of the outline view corresponds to the structure of the document. This default structure can be changed Additional structures (“viewpoints”) can be defined Default Types Viewpoint Viewpoint (shows data types and instances) © Bernd Kolb, Markus Voelter 2008
56.
© Bernd Kolb,
Markus Voelter 2008
57.
Repeatedly pressing Ctrl-O
shows the sequence of the various viewpoints in the popup. Ctrl-O once: Ctrl-O again: © Bernd Kolb, Markus Voelter 2008
58.
Content Assist /
Code Completion is customized via overwriting certain extension functions: List[Proposal] complete<MyType>_<propName> (emf::Eobject ctx, String prefix) A Proposal consists of a label, an icon and the text to insert © Bernd Kolb, Markus Voelter 2008
59.
By default, if
you use references in your DSL, you can use Go To Definition and Find References out of the box (it works cross-resource, see next section) © Bernd Kolb, Markus Voelter 2008
60.
To customize navigation,
overwrite the following extension in the Navigation.ext file. (you do NOT have to do this for DSL references!) Find the Definition of a “string” in a context: emf::EObject findDeclaration(String s, emf::EObject ctx) Find the References of a “string” in a context: List[UIContentNode] findReferences(String s, emf::EObject ctx) Create the node for the list of results: create UIContentNode createNode(RuleName tr) © Bernd Kolb, Markus Voelter 2008
61.
It is possible
to customize the font style for keywords (and only keywords) You can customize bold, italic, underline, strikethrough as well as foreground and background colors Override the fontstyle() extension for a specific meta class: Also override the delayContextSensitiveS tyling() extension and return the number of milliseconds of delay before the styling is done. Performance! A good number is 500. © Bernd Kolb, Markus Voelter 2008
62.
Often you want
to integrate an Xtext textual model with other, (possibly non-Xtext) models For example, you want to “annotate” an existing UML or GMF model Or you want to define a number of Xtext languages separately and integrate the models via refereneces To do this, you first have to make the referencing Xtext grammar aware of the referenced meta model: At the moment the metamodel has to be deployed into the “surrounding” Eclipse to make the editor work correctly, but we are working on a solution to that. © Bernd Kolb, Markus Voelter 2008
63.
You can then
reference “external” meta classes using the reference syntax introduced before: To import the actual data, use a Resource Reference (the URI grammar keyword). © Bernd Kolb, Markus Voelter 2008
64.
The Linker is
used to wire different models In most cases the automatically created grammar-derived Linker is sufficient However it is possible to customize the behavior further: Override link(emf::EObject this) © Bernd Kolb, Markus Voelter 2008
65.
It is necessary
in several cases to uniquely identify model elements by one of their properties. Used by Linker findReference/ findDeclaration … Default property is name To customize this, you can override the id() extension in the Extensions.ext file. © Bernd Kolb, Markus Voelter 2008
66.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
67.
Since Xtext instantiates
Ecore metamodels, the models can be processed with any EMF tool – e.g. oAW. We will not explain those here. You can process them with oAW Workflows, use them like any other EMF resource and parse them into your own Java programs. You can check the Create Generator Project checkbox in the projection creation wizard to get a sample generator as a starting point. © Bernd Kolb, Markus Voelter 2008
68.
The only Xtext-specific
aspect is using the generated parser. © Bernd Kolb, Markus Voelter 2008
69.
oAW’s Xpand template language
is a powerful and well established code generation facility with nice tooling. You can easily traverse the model/meta model using the Xtend language (à la OCL) © Bernd Kolb, Markus Voelter 2008
70.
Use EMF’s native
resource mechanism ▪ Xtext registers a ResourceFactory for the DSL’s file extension ▪ Simply pass the uri of the file you want to read to getResource() ▪ Note that you cannot write the model back! © Bernd Kolb, Markus Voelter 2008
71.
Use the generated
parser This is what the ResourceFactory does internally with some default behavior for error handling Note how parse errors and constraint violations are handled. © Bernd Kolb, Markus Voelter 2008
72.
Typically you you
are only working on the AST (ecore file) However, sometimes you need data from the parse tree Location of an element in the source file The text for a certain element The parse tree node at a certain offset Here is an example of how to get the location of an element in the source file: © Bernd Kolb, Markus Voelter 2008
73.
Overview over Eclipse
Modeling Intro to Textual DSLs Getting Started with Xtext Intro to Example Defining the Grammar Simple Editor Customization More Advanced Customization Processing the Models Summary © Bernd Kolb, Markus Voelter 2008
74.
Designing good languages
is not easy – and Xtext cannot simplify that process. However, building good tools for good languages is also not easy, and often a reason for not trying to build a language. Xtext makes that second challenge – the tooling – much much easier, thereby making language development a real practical option. Go ahead, give it a try! © Bernd Kolb, Markus Voelter 2008
75.
oAW Xtext is
currently in the process of transitioning into the (relatively) new Textual Modeling Framework project. Together with INRIA’s TCS, it serves as the basis for TMF. See also http://www.eclipse.org/proposals/tmf/ http://wiki.eclipse.org/TMF © Bernd Kolb, Markus Voelter 2008
76.
It is not
yet possible to specify custom action code in the parser This sometimes results in “ugly” meta models Becomes apparent when building expression languages [This is a plan item for TMF] © Bernd Kolb, Markus Voelter 2008
77.
www.openarchitectureware.org Specifically
the reference docs contain more info about Xtext www.eclipse.org/modeling/ EMF and all the other related tooling Future home of Eclipse TMF Podcast: Software Engineering Radio www.se-radio.net Several Episodes on MDSD © Bernd Kolb, Markus Voelter 2008
78.
Thanks for your
attention! Questions? Bernd Kolb Markus Voelter b.kolb@kolbware.de voelter@acm.org http://www.kolbware.de http://www.voelter.de © Bernd Kolb, Markus Voelter 2008
Jetzt herunterladen