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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Markus Amshove
November 04, 2016
Programming
1.8k
0
Share
Domänenspezifische Sprachen mit Xtext
Markus Amshove
November 04, 2016
More Decks by Markus Amshove
See All by Markus Amshove
Domänenspezifische Sprachen: Sprich domänisch!
markusamshove
0
520
Other Decks in Programming
See All in Programming
過去のレビュー知見をSkillsで資産化した話
pkshadeck
PRO
1
2.1k
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
1
110
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
1
150
エラー処理の温故知新 / history of error handling technic
ryotanakaya
7
1.9k
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
0
240
🦞OpenClaw works with AWS
licux
1
370
AIを導入する前にやるべきこと
negima
2
370
RailsTokyo 2026#4: AI様があれば、 Hotwireの弱点は消えるか?
naofumi
3
440
AgentCore Optimizationを始めよう!
licux
3
260
色即是空、空即是色、データサイエンス
kamoneggi
1
130
GoogleCloudとterraform完全に理解した
terisuke
1
200
tsserverとは何だったのか_これからどうなるのか
nowaki28
0
220
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
190
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Into the Great Unknown - MozCon
thekraken
41
2.5k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Mind Mapping
helmedeiros
PRO
1
190
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Google's AI Overviews - The New Search
badams
0
1k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
360
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
200
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
130
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