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
Оптимизируем производительность блока Казначейство
lamodatech
0
880
競技プログラミングへのお誘い@阪大BOOSTセミナー
kotamanegi
0
390
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
350
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
140
ATDDで素早く安定した デリバリを実現しよう!
tonnsama
1
1.2k
Zoneless Testing
rainerhahnekamp
0
150
快速入門可觀測性
blueswen
0
480
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
1.3k
return文におけるstd::moveについて
onihusube
1
1.4k
CloudflareStack でRAGに入門
asahiiwm
0
150
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
870
今年一番支援させていただいたのは認証系サービスでした
satoshi256kbyte
1
280
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
328
21k
Building an army of robots
kneath
302
44k
The Language of Interfaces
destraynor
155
24k
Building Applications with DynamoDB
mza
92
6.1k
How STYLIGHT went responsive
nonsquared
96
5.3k
Designing for Performance
lara
604
68k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Fireside Chat
paigeccino
34
3.1k
Side Projects
sachag
452
42k
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