2010-07-06 6 views

Antwort

19

Sie haben eine gute Quelle in der MEAP (Early Access) Buch
Gosh Cover
DSL in action von Debasish Ghosh (Blog: "Ruminations of a programmer)

Testing Frameworks wie scalatest sind klassische Beispiele für DSL:

test("pop is invoked on an empty stack") {  
    val emptyStack = new Stack[String] 
    evaluating { emptyStack.pop() } should produce [NoSuchElementException] 
    emptyStack should be ('empty) 
    } 

Es gibt viele andere DSL-basierte Frameworks da draußen:

  • specs: "Verhalten-Driven-Design-Rahmen"

  • internal DSLs

  • Squeryl: "A Scala ORM und DSL für Gespräche mit Datenbanken mit einem Minimum an Ausführlichkeit und maximaler Typsicherheit"

+0

Wirklich gutes Buch. Enthält auch andere Sprachen, damit Sie vergleichen können, wie sich DSLs in verschiedenen Sprachen anfühlen. –

+0

Ausgezeichnetes Buch. Mr. Ghosh deckt Scala besonders gut ab (das ist der Teil, den ich gelesen habe). Vielleicht möchten Sie auch Mr. Spiewaks pädagogischen, gut geschriebenen Beitrag über Parser Combinators (kritisch für externe Scala DSLs) lesen - www.codecommit.com/blog/scala/the-magic-behind-parser-combinators –

6

lift-json stellt eine DSL zur Verfügung, um JSON zu generieren. Zum Beispiel die folgende DSL:

("person" -> 
    ("name" -> "Joe") ~ 
    ("age" -> 35) ~ 
    ("spouse" -> 
    ("person" -> 
     ("name" -> "Marilyn") ~ 
     ("age" -> 33) 
    ) 
) 
) 

erstellt die folgenden JSON:

{ 
    "person": { 
    "name": "Joe", 
    "age": 35, 
    "spouse": { 
     "person": { 
     "name": "Marilyn", 
     "age": 33 
     } 
    } 
    } 
} 
1

Zwei gute Beispiele sind die Einbau-DSLs für Parser Kombinatoren und Schauspieler. Es gibt einen SQL-Wrapper namens DBC (noch nicht fertig), hier können Sie sehen, wie es aussieht: http://scala.sygneca.com/libs/dbc

0

Das ScalaQL-Papier (PDF) beschreibt die Implementierung einer interessanten DSL für sprachintegrierte Datenbankabfragen.

2

ScalaModules ist ein DSL für die Arbeit mit OSGi.

Eine andere ist verfügbar mit Apache Camel eine Plattform für Enterprise-Integration.

Scala-Query und Squeryl bieten auch DSLs für die Abfrage von Datenbanken unter anderem.

ScalaTest ist auch ein großartiges Beispiel dafür, was möglich ist.

Verwandte Themen