SlideShare a Scribd company logo
1 of 14
An Evening of DSLs: ‘Oslo’ James Lynch
Whatis Microsoft ‘Oslo’? Difficult to define Connecting Visual and TextualDSLs and SQL Server on the stack Questionablemerits/benefits An immature technology – ‘nascent’ (3rd CTP)
An ‘Oslo’ Use Case:<plug>bdUnit</plug>
Whatis Microsoft ‘Oslo’? Create a new language, parser and compiler… BDD Style DSL with C# Unit Tests output WPF IDE Agnostic Unit Tests -> Structure Map to the Rescue!
bdUnit IDE Demo
The Parser: MGrammar
MGrammar and Intellipad Intellipad Tokens and Syntaxes Language Projection(verb, noun, adjective...?) Syntax Delegation Functional Expressions
IntellipadDemo
LowLevel Projection When a @User(Chris) ~Username is "chriscanal"          and a @Post(DSLs) ~Title is "An Evening of DSLs"         and @Blog(ScotAltNet) ~Author is Chris         and @User(Chris) #Publish a @Post(DSLs) 	@Blog(ScotAltNet) should have more than0~Entries 	and @Blog(ScotAltNet) ~Entriesshould contain a @Post with DSLs ~Title 	and @Post(DSLs) ~PublicationDateshould belater than@Blog(ScotAltNet) ~CreatedDate 	and @User(Chris) ~PostCountshould be equal to1 Object/Entity Token Property Token Method Token Constraint Token Operator Syntax Value Syntax
Projection at a HigherLevel When a @User(Chris) ~Username is "chriscanal"   and a @Post(DSLs) ~Title is "An Evening of DSLs" and @Blog(ScotAltNet) ~Author is Chris and @User(Chris) #Publish a @Post(DSLs) @Blog(ScotAltNet) should have more than 0 ~Entries and @Blog(ScotAltNet) ~Entries should contain a @Post with DSLs ~Title and @Post(DSLs) ~PublicationDate should be later than @Blog(ScotAltNet) ~CreatedDate and @User(Chris) ~PostCount should be equal to 1 WhenStatement Syntax TargetList Syntax Constraint Syntax
Textual DSL Pipeline
‘Oslo’ DSL Pipeline    ‘M’ Language Framework and Tooling You’re on your own!
bdUnit Project: 	http://assembla.com/spaces/bdunit Blog: 			http://lynchjames.co.uk Email: 		lynchjames@gmail.com Twitter: 		lynchjames

More Related Content

Viewers also liked

Códigos de identificación
Códigos de identificaciónCódigos de identificación
Códigos de identificaciónNicoZ14
 
Vhdl semineri
Vhdl semineriVhdl semineri
Vhdl seminerisersld80
 
Desain interior
Desain interiorDesain interior
Desain interiormeaarrayan
 
Hizli ogrenme-egitim
Hizli ogrenme-egitimHizli ogrenme-egitim
Hizli ogrenme-egitimzeynep_zyn41
 
tchernobil
tchernobiltchernobil
tchernobilhome
 
Taller De Disfresses
Taller De DisfressesTaller De Disfresses
Taller De Disfressescpnapenyal
 
Descobrint el reciclatge
Descobrint el reciclatgeDescobrint el reciclatge
Descobrint el reciclatgeEdprimaria2013
 
Unidad iv -_seguridad
Unidad iv -_seguridadUnidad iv -_seguridad
Unidad iv -_seguridadWhaleejaa Wha
 
Tema 2: El planeta Terra
Tema 2: El planeta TerraTema 2: El planeta Terra
Tema 2: El planeta Terraadaura
 
Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)Wiebke Herding
 
The Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with PurposeThe Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with PurposeFusionspark Media, Inc.
 
What people think: explaining urban cycling
What people think: explaining urban cyclingWhat people think: explaining urban cycling
What people think: explaining urban cyclingRobin Lovelace
 
Ud 3 Els recursos de la natura
Ud 3 Els recursos de la naturaUd 3 Els recursos de la natura
Ud 3 Els recursos de la naturamarcapmany
 

Viewers also liked (17)

Códigos de identificación
Códigos de identificaciónCódigos de identificación
Códigos de identificación
 
Vhdl semineri
Vhdl semineriVhdl semineri
Vhdl semineri
 
Dossier Pirates a la vista!
Dossier Pirates a la vista!Dossier Pirates a la vista!
Dossier Pirates a la vista!
 
Desain interior
Desain interiorDesain interior
Desain interior
 
Narinan
NarinanNarinan
Narinan
 
Psiae 11 12
Psiae 11 12Psiae 11 12
Psiae 11 12
 
naturals-10
naturals-10naturals-10
naturals-10
 
Hizli ogrenme-egitim
Hizli ogrenme-egitimHizli ogrenme-egitim
Hizli ogrenme-egitim
 
tchernobil
tchernobiltchernobil
tchernobil
 
Taller De Disfresses
Taller De DisfressesTaller De Disfresses
Taller De Disfresses
 
Descobrint el reciclatge
Descobrint el reciclatgeDescobrint el reciclatge
Descobrint el reciclatge
 
Unidad iv -_seguridad
Unidad iv -_seguridadUnidad iv -_seguridad
Unidad iv -_seguridad
 
Tema 2: El planeta Terra
Tema 2: El planeta TerraTema 2: El planeta Terra
Tema 2: El planeta Terra
 
Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)Knowledge Management (NALAS, 11-09-14)
Knowledge Management (NALAS, 11-09-14)
 
The Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with PurposeThe Path to Engagement is Paved with Purpose
The Path to Engagement is Paved with Purpose
 
What people think: explaining urban cycling
What people think: explaining urban cyclingWhat people think: explaining urban cycling
What people think: explaining urban cycling
 
Ud 3 Els recursos de la natura
Ud 3 Els recursos de la naturaUd 3 Els recursos de la natura
Ud 3 Els recursos de la natura
 

Similar to An Evening Of DSLs: Microsoft Oslo

Wire It 0.5.0 Presentation
Wire It 0.5.0 PresentationWire It 0.5.0 Presentation
Wire It 0.5.0 PresentationEric Abouaf
 
DSL in test automation
DSL in test automationDSL in test automation
DSL in test automationtest test
 
.NET and C# introduction
.NET and C# introduction.NET and C# introduction
.NET and C# introductionPeter Gfader
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Vitaly Baum
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreEsha Yadav
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...Maarten Balliauw
 
C++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of ClassC++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of ClassYogendra Rampuria
 
OntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific LanguagesOntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific LanguagesTobias Walter
 
Wire It Presentation
Wire It PresentationWire It Presentation
Wire It PresentationEric Abouaf
 
Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Maciek Próchniak
 
Description and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services WorkflowDescription and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services WorkflowMartin Szomszor
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)Ary Borenszweig
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)Ary Borenszweig
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)Crystal Language
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLsintelliyole
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesEelco Visser
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...Mickael Istria
 
Lecture 1 slides
Lecture 1 slidesLecture 1 slides
Lecture 1 slidesamarprabhu
 

Similar to An Evening Of DSLs: Microsoft Oslo (20)

Wire It 0.5.0 Presentation
Wire It 0.5.0 PresentationWire It 0.5.0 Presentation
Wire It 0.5.0 Presentation
 
DSL explained _
DSL explained _DSL explained _
DSL explained _
 
DSL in test automation
DSL in test automationDSL in test automation
DSL in test automation
 
.NET and C# introduction
.NET and C# introduction.NET and C# introduction
.NET and C# introduction
 
Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)Building DSLs On CLR and DLR (Microsoft.NET)
Building DSLs On CLR and DLR (Microsoft.NET)
 
Runtime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya RathoreRuntime Environment Of .Net Divya Rathore
Runtime Environment Of .Net Divya Rathore
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
C++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of ClassC++ 11 Style : A Touch of Class
C++ 11 Style : A Touch of Class
 
OntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific LanguagesOntoDSL: An Ontology-Based Framework for Domain-Specific Languages
OntoDSL: An Ontology-Based Framework for Domain-Specific Languages
 
Wire It Presentation
Wire It PresentationWire It Presentation
Wire It Presentation
 
Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013Scalable database, Scalable language @ JDC 2013
Scalable database, Scalable language @ JDC 2013
 
Description and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services WorkflowDescription and Discovery of Type Adaptors for Web Services Workflow
Description and Discovery of Type Adaptors for Web Services Workflow
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Crystal internals (part 1)
Crystal internals (part 1)Crystal internals (part 1)
Crystal internals (part 1)
 
Smoothing Your Java with DSLs
Smoothing Your Java with DSLsSmoothing Your Java with DSLs
Smoothing Your Java with DSLs
 
TI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific LanguagesTI1220 Lecture 14: Domain-Specific Languages
TI1220 Lecture 14: Domain-Specific Languages
 
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
IDE as a Front-end and Fast time-to-market language support in Eclipse IDE re...
 
Perl5 VS JSON
Perl5 VS JSONPerl5 VS JSON
Perl5 VS JSON
 
Lecture 1 slides
Lecture 1 slidesLecture 1 slides
Lecture 1 slides
 

Recently uploaded

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

An Evening Of DSLs: Microsoft Oslo

  • 1. An Evening of DSLs: ‘Oslo’ James Lynch
  • 2. Whatis Microsoft ‘Oslo’? Difficult to define Connecting Visual and TextualDSLs and SQL Server on the stack Questionablemerits/benefits An immature technology – ‘nascent’ (3rd CTP)
  • 3.
  • 4. An ‘Oslo’ Use Case:<plug>bdUnit</plug>
  • 5. Whatis Microsoft ‘Oslo’? Create a new language, parser and compiler… BDD Style DSL with C# Unit Tests output WPF IDE Agnostic Unit Tests -> Structure Map to the Rescue!
  • 8. MGrammar and Intellipad Intellipad Tokens and Syntaxes Language Projection(verb, noun, adjective...?) Syntax Delegation Functional Expressions
  • 10. LowLevel Projection When a @User(Chris) ~Username is "chriscanal" and a @Post(DSLs) ~Title is "An Evening of DSLs" and @Blog(ScotAltNet) ~Author is Chris and @User(Chris) #Publish a @Post(DSLs) @Blog(ScotAltNet) should have more than0~Entries and @Blog(ScotAltNet) ~Entriesshould contain a @Post with DSLs ~Title and @Post(DSLs) ~PublicationDateshould belater than@Blog(ScotAltNet) ~CreatedDate and @User(Chris) ~PostCountshould be equal to1 Object/Entity Token Property Token Method Token Constraint Token Operator Syntax Value Syntax
  • 11. Projection at a HigherLevel When a @User(Chris) ~Username is "chriscanal" and a @Post(DSLs) ~Title is "An Evening of DSLs" and @Blog(ScotAltNet) ~Author is Chris and @User(Chris) #Publish a @Post(DSLs) @Blog(ScotAltNet) should have more than 0 ~Entries and @Blog(ScotAltNet) ~Entries should contain a @Post with DSLs ~Title and @Post(DSLs) ~PublicationDate should be later than @Blog(ScotAltNet) ~CreatedDate and @User(Chris) ~PostCount should be equal to 1 WhenStatement Syntax TargetList Syntax Constraint Syntax
  • 13. ‘Oslo’ DSL Pipeline ‘M’ Language Framework and Tooling You’re on your own!
  • 14. bdUnit Project: http://assembla.com/spaces/bdunit Blog: http://lynchjames.co.uk Email: lynchjames@gmail.com Twitter: lynchjames