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.7k
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
520
Other Decks in Programming
See All in Programming
Claude Code Skill入門
mayahoney
0
140
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
540
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
3
1.2k
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
310
Fundamentals of Software Engineering In the Age of AI
therealdanvega
1
240
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
170
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
110
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
370
CSC307 Lecture 12
javiergs
PRO
0
470
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
340
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
Done Done
chrislema
186
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
110
Mind Mapping
helmedeiros
PRO
1
110
Why Our Code Smells
bkeepers
PRO
340
58k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
190
The Language of Interfaces
destraynor
162
26k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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