Download ppt - DSL explained _

Transcript
Page 1: DSL explained _

(Domain Specific Language,not Direct Server Link)

[email protected]

DSL explained

Page 2: DSL explained _

DSL premises

Page 3: DSL explained _

and only then for computers

Code is written for

people

Page 4: DSL explained _

Objects ---> Vocabulary

Grammar ---> Language

Domain Driven Design

DSL

Page 5: DSL explained _

DSL is advanced stuff

Page 6: DSL explained _

DSL example(by Martin Fowler)

Page 7: DSL explained _
Page 8: DSL explained _
Page 9: DSL explained _
Page 10: DSL explained _
Page 11: DSL explained _
Page 12: DSL explained _
Page 13: DSL explained _
Page 14: DSL explained _
Page 15: DSL explained _

DSL is a computer language with:

human language nature

limited expressiveness

domain focus

Page 16: DSL explained _

DSL types

internal external

language workbench

Page 17: DSL explained _

Internal DSLexample

Page 18: DSL explained _
Page 19: DSL explained _
Page 20: DSL explained _

External DSLexample

Page 21: DSL explained _
Page 22: DSL explained _

Language workbenchexample

Page 23: DSL explained _
Page 24: DSL explained _

More examples

Page 25: DSL explained _

regular expressions

CSSSQL

all XML

Unix config filesRuby on Rails

mocking frameworks

wiki syntax / markdown

LINQ

Page 26: DSL explained _

Using internal DSL(aka Fluent Interface)

Page 27: DSL explained _

Easy to do... no parsers, etc.

Full IDE support

Good

BadLimited by host language

Page 28: DSL explained _
Page 29: DSL explained _
Page 30: DSL explained _
Page 31: DSL explained _
Page 32: DSL explained _
Page 33: DSL explained _

Method chaining

Object scoping

Expression Builder

Page 34: DSL explained _

Using external DSL

Page 35: DSL explained _

Unlimited expressiveness

You choose execution environment

Good

Bad

Requires “more” work

No IDE support

Page 36: DSL explained _

DSLscript

parse

AST Semantic model

optional

Page 37: DSL explained _

You can parse DSL

manually (regexp, Tokenizer)

using some tool(ANTLR, yacc, ...)

Page 38: DSL explained _
Page 39: DSL explained _

Using Language Workbenches

Page 40: DSL explained _

Meta Programming System

Microsoft Oslo

Intentional Domain Workbench

Eclipse Modeling Project

Page 41: DSL explained _
Page 42: DSL explained _

concepts(language)

edit

you

Page 43: DSL explained _

AST(DSL script)

concepts(language)

edit

describe

you

Page 44: DSL explained _

AST(DSL script)

concepts(language)

edit

edit

describe

“user”

you

Page 45: DSL explained _

AST(DSL script)

concepts(language)

edit

describe

“user”

you

no text, just AST !

edit

Page 46: DSL explained _

useful stuff

(like java code)

AST(DSL script)

concepts(language)

edit

describe

transformed

“user”

you

edit

Page 47: DSL explained _
Page 48: DSL explained _

Module Project

Page 49: DSL explained _

Module Project

Solution

Language

Generator

DevKit

kind of

Page 50: DSL explained _

Model Module Project

Solution

Language

Generator

DevKit

kind of

Page 51: DSL explained _

Node Model Module Project

Solution

Language

Generator

DevKit

kind ofincludes

Conceptdefined

by

Page 52: DSL explained _
Page 53: DSL explained _
Page 54: DSL explained _
Page 55: DSL explained _
Page 56: DSL explained _
Page 57: DSL explained _
Page 58: DSL explained _
Page 59: DSL explained _
Page 60: DSL explained _
Page 61: DSL explained _
Page 62: DSL explained _
Page 63: DSL explained _
Page 64: DSL explained _
Page 65: DSL explained _
Page 66: DSL explained _
Page 67: DSL explained _
Page 68: DSL explained _
Page 69: DSL explained _

Internal DSLs rule! :)


Recommended