Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Domänenspezifische Sprachen mit Xtext
Search
Markus Amshove
November 04, 2016
Programming
0
1.6k
Domänenspezifische Sprachen mit Xtext
Markus Amshove
November 04, 2016
Tweet
Share
More Decks by Markus Amshove
See All by Markus Amshove
Domänenspezifische Sprachen: Sprich domänisch!
markusamshove
0
510
Other Decks in Programming
See All in Programming
PicoRuby on Rails
makicamel
2
120
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
1
220
iOS 26にアップデートすると実機でのHot Reloadができない?
umigishiaoi
0
110
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
630
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
360
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
37
7.1k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
340
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
640
Porting a visionOS App to Android XR
akkeylab
0
200
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
0
300
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
50
32k
童醫院敏捷轉型的實踐經驗
cclai999
0
210
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Become a Pro
speakerdeck
PRO
28
5.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Done Done
chrislema
184
16k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
Gamification - CAS2011
davidbonilla
81
5.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Transcript
Domänenspezifische Sprachen mit Xtext
1.Arten von Programmiersprachen 2.Vorteile von DSLs 3.Was ist Xtext? 4.Vorführung
GPL (General Purpose Language)
GPL (General Purpose Language) { C# C++
GPL (General Purpose Language) DSL (Domain Specific Language) { C#
C++
GPL (General Purpose Language) DSL (Domain Specific Language) { C#
C++ { SQL
GPL
None
Vorteile
Vorteile Redundanzminderung
Vorteile Redundanzminderung Abstraktion
Vorteile Redundanzminderung Abstraktion Domänenbegriffe
Vorteile Redundanzminderung Abstraktion Domänenbegriffe Moderne Entwicklung
None
None
None
None
http://xtext.org
None
Open-Source
Open-Source Eclipse Foundation
Open-Source Eclipse Foundation Gängige Entwicklungsumgebungen
Infrastruktur
Infrastruktur
Infrastruktur
IDE-Integration
IDE-Integration
IDE-Integration
None
Was muss man dafür tun?
Grammatik
Grammatik Model: greetings+=Greeting*; Greeting: 'Hello' name=ID '!';
Grammatik Sprachinfrastruktur
Grammatik Sprachinfrastruktur IDE-Integration
Grammatik Sprachinfrastruktur IDE-Integration
Grammatik Sprachinfrastruktur IDE-Integration
Grammatik Sprachinfrastruktur IDE-Integration
Grammatik Sprachinfrastruktur IDE-Integration
Grammatik Language Server Protocol Sprachinfrastruktur IDE-Integration
Grammatik Language Server Protocol Sprachinfrastruktur IDE-Integration [ ]
Grammatik Language Server Protocol Sprachinfrastruktur IDE-Integration [ ]
Vorführung
Domäne
Domänenbegriffe
Domänenbegriffe Auswahl
Domänenbegriffe Auswahl Freitext
Domänenbegriffe Auswahl Freitext Verteilung
Grammatik
Grammatik FragebogenDatei: frageboegen+=Fragebogen* ;
FragebogenDatei: frageboegen+=Fragebogen* ; Parserregel
FragebogenDatei: frageboegen+=Fragebogen* ; Parserregel Feature(Attribut)
FragebogenDatei: frageboegen+=Fragebogen* ; Parserregel Feature(Attribut)
FragebogenDatei: frageboegen+=Fragebogen* ; 0.. ∞
Fragebogen: 'Fragebogen' name=STRING abschnitte+=Abschnitt+;
Fragebogen: 'Fragebogen' name=STRING abschnitte+=Abschnitt+; Keyword
Fragebogen: 'Fragebogen' name=STRING abschnitte+=Abschnitt+; Keyword 1.. ∞
Abschnitt: 'Abschnitt' name=STRING fragen+=Frage+ ; Frage: Auswahl | Verteilung |
Freitext ;
Abschnitt: 'Abschnitt' name=STRING fragen+=Frage+ ; Frage: Auswahl | Verteilung |
Freitext ; Oder
Abschnitt: 'Abschnitt' name=STRING fragen+=Frage+ ; Frage: Auswahl | Verteilung |
Freitext ;
Verteilung: 'Verteilung' Artikel? name=STRING 'mit' verteilbar+=STRING+; Artikel: ('an' | 'für'
| 'aus' | 'von');
Verteilung: 'Verteilung' Artikel? name=STRING 'mit' verteilbar+=STRING+; Artikel: ('an' | 'für'
| 'aus' | 'von'); Optional
None
None
Demo