SlideShare a Scribd company logo
Domain Specific Languages
in Eclipse with Xtext
redefine.digital.design: Helping you deal with complexity in VHDL and Verilog.
Dr. Ir. Hendrik Eeckhaut
About
CTO at Sigasi @heeckhau
Sigasi Studio: Eclipse based IDE for
VHDL and Verilog (digital hardware design)
• Domain Specific Languages (DSL)
• Xtext
• Demo
Overview
Domain specific language
“A domain-specific language (DSL) is
a computer language
specialized to a particular application domain”
Examples:
●Regular expressions: ^com.sigasi.*$
●SQL: SELECT * FROM table_name
https://en.wikipedia.org/wiki/Domain-specific_language
Cold beer
● Optimize energy efficiency
● Lots of variants (size, components)
● Cooling algorithms
○ Straight forward
○ Exceptions and interactions
○ Different for variants
Refrigerator control
Refrigerator description
Cooling algorithm
Code Generation
C-code
Documentation
Domain specific
simulator
http://www.voelter.de/data/presentations/RefrigeratorsAndDSLs.pdf
● Understand ?
● Validate ?
● Modify ?
Why DSLs
DSLs allow to express solutions at the
abstraction level of the problem domain.
⇒ Domain experts can understand, validate, modify
and develop DSL programs
How ?
Language definition (BNF)
Lexer and Parser
Abstract Syntax Tree
Linking, scoping, types
Validation
Code generator, interpreter
DSL Development Framework
Full DSL infrastructure (parser, linker, …)
Define DSL with a grammar language
⇩
+ Rich editing support for Eclipse, IntelliJ
IDEA and web browser
Rich editing
●Syntax coloring
●Type time validation
●Content assist (autocomplete)
●Code formatting
●Find references
●Rename
●Outline
How
Language definition (BNF)
Lexer and Parser
Abstract Syntax Tree
Linking, scoping, types
Validation
Code generator, interpreter
→ Xtext grammar
→ ANTLR
→ Eclipse EMF
(partially generated)
Java
To good to be true?
●Xtext contains default implementations for linking,
validation, …
●Can be fully customized
●Wired together with Dependency Injection
(Google Guice)
Demo
Small DSL to model entities and properties
1. datatype String
2.
3. entity Blog {
4. title: String
5. many posts: Post
6. }
7.
8. entity HasAuthor {
9. author: String
10. }
11.
12. entity Post extends HasAuthor {
13. title: String
14. content: String
15. many comments: Comment
16. }
17.
18. entity Comment extends HasAuthor {
19. content: String
20. }
Demo
1. datatype String
2.
3. entity Blog {
4. title: String
5. many posts: Post
6. }
7.
8. entity HasAuthor {
9. author: String
10. }
11.
12. entity Post extends HasAuthor {
13. title: String
14. content: String
15. many comments: Comment
16. }
17.
18. entity Comment extends HasAuthor {
19. content: String
20. }
elements : Type
(datatype or entity)
features : Feature
Domainmodel
Demo
1. datatype String
2.
3. entity Blog {
4. title: String
5. many posts: Post
6. }
7.
8. entity HasAuthor {
9. author: String
10. }
11.
12. entity Post extends HasAuthor {
13. title: String
14. content: String
15. many comments: Comment
16. }
17.
18. entity Comment extends HasAuthor {
19. content: String
20. }
Live Demo
Why Xtext
Very mature and complete system
Statically typed AST model
Open Source
Outro
DSLs?
●Very powerful
●Lots of work
Xtext
●Recommended DSL development framework
Sigasi is hiring: www.sigasi.com/careers
Hands on
Download Eclipse IDE for Java and DSL Developers
https://www.eclipse.org/downloads/
Start 15 Minutes tutorial from
https://eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html

More Related Content

PDF
Serverless Code Components
PDF
PPTX
InChI Resolver
PDF
Shaping serverless architecture with domain driven design patterns
PDF
Michael Hall [InfluxData] | InfluxDB Community Update | InfluxDays EMEA 2021
PDF
eZ Publish Summer Camp 2013 - Building custom field types
PPTX
Getting started with .NET Core on Linux
PPT
Tikal Fuse Day Access Layer Implementation (C#) Based On Mongo Db
Serverless Code Components
InChI Resolver
Shaping serverless architecture with domain driven design patterns
Michael Hall [InfluxData] | InfluxDB Community Update | InfluxDays EMEA 2021
eZ Publish Summer Camp 2013 - Building custom field types
Getting started with .NET Core on Linux
Tikal Fuse Day Access Layer Implementation (C#) Based On Mongo Db

What's hot (15)

PDF
Log forwarding at Scale
PDF
Jess Ingrassellino [InfluxData] | How to Get Data Into InfluxDB | InfluxDays ...
PDF
Cloud Native Logging / Fluentd Summit Tokyo
PDF
NoSQLEU: Different NoSQL tools in Production
PDF
Collaborative environment with data science notebook
PDF
IoT Data Connector Fluent Bit
PDF
Fluent-bit
PPTX
Developing for Glass & Alfresco
PDF
Synchronization with CouchDB and PouchDB
ODP
PostgreSQL As Data Integration Tool
PDF
PGDay.Amsterdam 2018 - Stefanie Stoelting - PostgreSQL As Data Integration Tool
PDF
Dominik Obermaier and Anja Helmbrecht-Schaar [HiveMQ] | IIoT Monitoring with ...
PPTX
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
PDF
Kristina Robinson [InfluxData] | Understand and Visualize Your Data with Infl...
PPTX
Python Pants Build System for Large Codebases
Log forwarding at Scale
Jess Ingrassellino [InfluxData] | How to Get Data Into InfluxDB | InfluxDays ...
Cloud Native Logging / Fluentd Summit Tokyo
NoSQLEU: Different NoSQL tools in Production
Collaborative environment with data science notebook
IoT Data Connector Fluent Bit
Fluent-bit
Developing for Glass & Alfresco
Synchronization with CouchDB and PouchDB
PostgreSQL As Data Integration Tool
PGDay.Amsterdam 2018 - Stefanie Stoelting - PostgreSQL As Data Integration Tool
Dominik Obermaier and Anja Helmbrecht-Schaar [HiveMQ] | IIoT Monitoring with ...
StratioDeep: an Integration Layer Between Spark and Cassandra - Spark Summit ...
Kristina Robinson [InfluxData] | Understand and Visualize Your Data with Infl...
Python Pants Build System for Large Codebases
Ad

Similar to Domain specific languages in eclipse with Xtext (Zeus, UGent) (20)

PPTX
Building Your Own DSL with Xtext
PPTX
Xbase implementing specific domain language for java
PDF
Xtext project and PhDs in Gemany
PDF
Domain Specific Languages and C++ Code Generation
PPTX
Creating a textual domain specific language
PDF
Language Engineering With Xtext
PPT
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIs
PDF
DSLs in Boo Domain Specific Languages in NET 1st Edition Ayende Rahien
PPT
DSL explained _
PDF
DSLs in Boo Domain Specific Languages in NET 1st Edition Ayende Rahien
PPTX
Specification Scala DSL for Mobile Application
PDF
Domain Specific Languages - A superficial approach
PPTX
Scam 08
PPTX
Introduction To MDD
PDF
Dsl overview
PDF
DSL and EMFText
PPTX
AestasIT - Internal DSLs in Scala
PDF
Compiler Construction | Lecture 17 | Beyond Compiler Construction
PPTX
Bdd and dsl как способ построения коммуникации на проекте
PPTX
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
Building Your Own DSL with Xtext
Xbase implementing specific domain language for java
Xtext project and PhDs in Gemany
Domain Specific Languages and C++ Code Generation
Creating a textual domain specific language
Language Engineering With Xtext
A Model-Driven Approach to Generate External DSLs from Object-Oriented APIs
DSLs in Boo Domain Specific Languages in NET 1st Edition Ayende Rahien
DSL explained _
DSLs in Boo Domain Specific Languages in NET 1st Edition Ayende Rahien
Specification Scala DSL for Mobile Application
Domain Specific Languages - A superficial approach
Scam 08
Introduction To MDD
Dsl overview
DSL and EMFText
AestasIT - Internal DSLs in Scala
Compiler Construction | Lecture 17 | Beyond Compiler Construction
Bdd and dsl как способ построения коммуникации на проекте
BDD or DSL как способ построения коммуникации на проекте - опыт комплексного ...
Ad

More from Sigasi (8)

PPTX
The future of teaching hdl with Sigasi Studio
PDF
Creating your own coding style
PDF
Shortening the feedback loop: faster and better code development
PDF
Plc2 2015 first time right coding
PDF
Plc2 2015 your own ide
PDF
Graphical Programming is Dead
PDF
Building a software business — lessons learned
PDF
EclipseCon Europe 2011
The future of teaching hdl with Sigasi Studio
Creating your own coding style
Shortening the feedback loop: faster and better code development
Plc2 2015 first time right coding
Plc2 2015 your own ide
Graphical Programming is Dead
Building a software business — lessons learned
EclipseCon Europe 2011

Recently uploaded (20)

PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Encapsulation theory and applications.pdf
PDF
KodekX | Application Modernization Development
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Electronic commerce courselecture one. Pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Chapter 3 Spatial Domain Image Processing.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Review of recent advances in non-invasive hemoglobin estimation
Unlocking AI with Model Context Protocol (MCP)
Spectral efficient network and resource selection model in 5G networks
Dropbox Q2 2025 Financial Results & Investor Presentation
Mobile App Security Testing_ A Comprehensive Guide.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
NewMind AI Weekly Chronicles - August'25 Week I
The Rise and Fall of 3GPP – Time for a Sabbatical?
Encapsulation theory and applications.pdf
KodekX | Application Modernization Development
MYSQL Presentation for SQL database connectivity
Electronic commerce courselecture one. Pdf
Network Security Unit 5.pdf for BCA BBA.
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Building Integrated photovoltaic BIPV_UPV.pdf
Machine learning based COVID-19 study performance prediction
Diabetes mellitus diagnosis method based random forest with bat algorithm
“AI and Expert System Decision Support & Business Intelligence Systems”
Chapter 3 Spatial Domain Image Processing.pdf

Domain specific languages in eclipse with Xtext (Zeus, UGent)

  • 1. Domain Specific Languages in Eclipse with Xtext redefine.digital.design: Helping you deal with complexity in VHDL and Verilog. Dr. Ir. Hendrik Eeckhaut
  • 2. About CTO at Sigasi @heeckhau Sigasi Studio: Eclipse based IDE for VHDL and Verilog (digital hardware design)
  • 3. • Domain Specific Languages (DSL) • Xtext • Demo Overview
  • 4. Domain specific language “A domain-specific language (DSL) is a computer language specialized to a particular application domain” Examples: ●Regular expressions: ^com.sigasi.*$ ●SQL: SELECT * FROM table_name https://en.wikipedia.org/wiki/Domain-specific_language
  • 5. Cold beer ● Optimize energy efficiency ● Lots of variants (size, components) ● Cooling algorithms ○ Straight forward ○ Exceptions and interactions ○ Different for variants
  • 6. Refrigerator control Refrigerator description Cooling algorithm Code Generation C-code Documentation Domain specific simulator http://www.voelter.de/data/presentations/RefrigeratorsAndDSLs.pdf ● Understand ? ● Validate ? ● Modify ?
  • 7. Why DSLs DSLs allow to express solutions at the abstraction level of the problem domain. ⇒ Domain experts can understand, validate, modify and develop DSL programs
  • 8. How ? Language definition (BNF) Lexer and Parser Abstract Syntax Tree Linking, scoping, types Validation Code generator, interpreter
  • 9. DSL Development Framework Full DSL infrastructure (parser, linker, …) Define DSL with a grammar language ⇩ + Rich editing support for Eclipse, IntelliJ IDEA and web browser
  • 10. Rich editing ●Syntax coloring ●Type time validation ●Content assist (autocomplete) ●Code formatting ●Find references ●Rename ●Outline
  • 11. How Language definition (BNF) Lexer and Parser Abstract Syntax Tree Linking, scoping, types Validation Code generator, interpreter → Xtext grammar → ANTLR → Eclipse EMF (partially generated) Java
  • 12. To good to be true? ●Xtext contains default implementations for linking, validation, … ●Can be fully customized ●Wired together with Dependency Injection (Google Guice)
  • 13. Demo Small DSL to model entities and properties 1. datatype String 2. 3. entity Blog { 4. title: String 5. many posts: Post 6. } 7. 8. entity HasAuthor { 9. author: String 10. } 11. 12. entity Post extends HasAuthor { 13. title: String 14. content: String 15. many comments: Comment 16. } 17. 18. entity Comment extends HasAuthor { 19. content: String 20. }
  • 14. Demo 1. datatype String 2. 3. entity Blog { 4. title: String 5. many posts: Post 6. } 7. 8. entity HasAuthor { 9. author: String 10. } 11. 12. entity Post extends HasAuthor { 13. title: String 14. content: String 15. many comments: Comment 16. } 17. 18. entity Comment extends HasAuthor { 19. content: String 20. } elements : Type (datatype or entity) features : Feature Domainmodel
  • 15. Demo 1. datatype String 2. 3. entity Blog { 4. title: String 5. many posts: Post 6. } 7. 8. entity HasAuthor { 9. author: String 10. } 11. 12. entity Post extends HasAuthor { 13. title: String 14. content: String 15. many comments: Comment 16. } 17. 18. entity Comment extends HasAuthor { 19. content: String 20. }
  • 17. Why Xtext Very mature and complete system Statically typed AST model Open Source
  • 18. Outro DSLs? ●Very powerful ●Lots of work Xtext ●Recommended DSL development framework Sigasi is hiring: www.sigasi.com/careers
  • 19. Hands on Download Eclipse IDE for Java and DSL Developers https://www.eclipse.org/downloads/ Start 15 Minutes tutorial from https://eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html