Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DSL Design - Best Practices (XtextCON 2015)
Search
Sven Efftinge
May 20, 2015
Technology
0
1.1k
DSL Design - Best Practices (XtextCON 2015)
Sven Efftinge
May 20, 2015
Tweet
Share
More Decks by Sven Efftinge
See All by Sven Efftinge
Life of a Resource (XtextCON 2015)
svenefftinge
0
320
Future of Xtext (with Sebastian Zarnekow)
svenefftinge
0
19k
Other Decks in Technology
See All in Technology
普段使ってるClaude Skillsの紹介(by Notebooklm)
zerebom
8
2.2k
日本の AI 開発と世界の潮流 / GenAI Development in Japan
hariby
1
440
障害対応訓練、その前に
coconala_engineer
0
200
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
360
AI with TiDD
shiraji
1
280
株式会社ビザスク_AI__Engineering_Summit_Tokyo_2025_登壇資料.pdf
eikohashiba
1
110
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
6
4.8k
「もしもデータ基盤開発で『強くてニューゲーム』ができたなら今の僕はどんなデータ基盤を作っただろう」
aeonpeople
0
240
Authlete で実装する MCP OAuth 認可サーバー #CIMD の実装を添えて
watahani
0
180
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
220
AI駆動開発ライフサイクル(AI-DLC)の始め方
ryansbcho79
0
180
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
How Software Deployment tools have changed in the past 20 years
geshan
0
30k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
190
Game over? The fight for quality and originality in the time of robots
wayneb77
1
66
Amusing Abliteration
ianozsvald
0
69
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Unsuck your backbone
ammeep
671
58k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Transcript
DSL DESIGN Sven Efftinge
Why an External DSL • Write the thing you care
in the way you want • Have compile time feedback, that understand your domain • Be cross platform / platform independent
DSL Design != GPL Design
A Good DSL makes editing simpler makes reading simpler improves
stakeholder communication uses a familiar syntax nicely integrates into workflow tools and execution are fast is highly maintainable
DSL A Powerful Programming Interface User Interface
Who does What Requirements Engineering
Use Existing Domain Terminology
Use Familiar SYNTAX
When To Sugar Be explicit and regular unless the concept
is used often and well known
Never Change
class { visibility=public name="HelloWorld" members = [ method { visibility=public
static=true returnType=void name="main" parameters = [ parameter { type = String varArgs = true name = args } ] ... } ] } public class HelloWorld { public static void main(String... args) { System.out.println("Hello World"); } } Generic vs. Specific
Business Readable DSLs
Use Structure, use Whitespace
Be Regular
Keywords First reduces look ahead for the parser &
the reader visual anchor
Good Defaults
Multiple Files FTW a package or namespace is a logical
container but not necessarily a physical! improves collaboration
Names! Simple name clashes are rare We think in names
No more UUIDs!
Loose Grammar
Strict Validation
you ain’t gonna need it
Don’t Reinvent Expressions
Invasiveness • The outside view must only change when
the file changes physically • Bad Example: Xtend return types
Dynamic Scoping Never!
Preprocessors Nooo!
N-to-1 Code Generation source source generated No more incremental builds!
OutOfMemoryException!
Questions