Wir werden während der Schulung konkretes DSL-Design anhand von praxisnahen Beispielen üben. Ich bitte deshalb darum, einen Laptop mitzubringen und einige Software zu installieren. Für den ersten Tag reicht erstmal Racket.
Racket: https://download.racket-lang.org/
Gegebenenfalls werden wir brauchen:
JDK: https://www.oracle.com/java/technologies/downloads/
Maven: https://maven.apache.org/download.cgi
IntelliJ MPS: https://www.jetbrains.com/mps/
Xtext/Eclipse: https://www.eclipse.org/downloads/packages/ Dort: "Eclipse IDE for Java and DSL Developers"
Bei Fragen oder Problemen gern Mike Sperber kontaktieren!
- Grammatk / Syntax
- Parser: Code (Abfolge von Buchstaben) -> AST
- Lisp-artige Mechanismen: Syntax
- Builder-Pattern
- textuelle Ersatzung
- Haskell ...?
- jmd #1 überlegt sich Format für Tabellen
- jmd #2 erzeugt Tabellen mit diesem Format
- jmd #3 integriert Tabellendaten in konkrete AUTOSAR-Modelle
- P: EINE Zelle mit "primitivem" Typ -ODER-
- P: ein Header -ODER-
- C: eine Datensatz aus einer festen Anzahl von Tabellen -> Struct/Record -ODER-
- C: eine Liste aus einer dynamischen Anzahl von Tabellen -> Liste
- Was macht Kotlin um DSL zu ermöglichen
- QDSL vs EDSL
- Wie geht man die Modellierung von grossen Themen an?
- Scala VS Kotlin
- Sprachen ohne Klammerprobleme ;-) => MPS?
- Kosten / Nutzen von Parsern...
1. Modell fertigmachen + aufräumen + Tests + Bug fixen
2. Abstraktion
3. Tabellen in Kotlin
4. Eure Beispiele
- Option
- Unterbau Validierungsbeispiel
- Scala (Monaden)
- Kotlin-Monade
- Kotlin-DSL
- Macros ("QDSL")
- Syntax
- projektive Syntax
- The Next 700 Programming Languages
- Selective Applicative Functors
- Vavr, Vavr Kotlin
- Monaden in Kotlin, Artikel dazu
- Phil Wadler: QDSL
- Schreibe Dein Programm! (Kapitel zum Lambda-Kalkül)