- RevisedSelected Papers
- Mark van den Bran, Dragan Gasevic,k Jeff Gray (Eds.)
fetch
Wichtige Stichworte:
- DSL Domain Specific Languages:
- wie modular kombinieren (mit general purpose und specific Languages) , z.B. auf Parser Ebene
- entwickeln sich schneller als general purpose languages
- SPL Software Product Lines: Familie von Software z.B. auf verschiedener Hardware oder verschiedene Konfigurationen
- FM Feature Modeling: um Variability und/von Artifacts von SPL zu entwickeln
Markus Herrmannsdoerfer, Daniel Ratiu, Guido Wachsmuth. Language Evolutionin Practice. The History of GMF
GMF = Graphical Modeling Framework ist weit verbreitetes open source framework für modelDriven Entwicklung von Diagramm Editoren.
Lessons Learned:
- Metamodels entwickeln sich wegen UserWünschen und TechologieEntwicklung
- andere Artifakte ändern sich auch, sind aber weniger sichtbar
- OperatorBased coupled evolution of metamodels and models is feasible
Thiago Tonelli Bartolomei, etc.. Study of an API Migration for Two XML APIs
MigrationsStudie zwischen 3 APIs für XML Processing in Java: DOM, JDOM, XOM
- This-Returning vs. void setters: mit ersteren kann man Methoden chainen
- Constructor vs Factory Methods ==> zusätzliche FactoryObjekt
- Eager vs. Lazy Queries, macht z.B. beim Löschen einen Unterschied
- Un/Availability of API Capabilities
- Less vs. More Strict Pre-conditions (z.B. tut Löschen eines nicht vorhandenen keys nicht oder wirft es eine Exception?)
implementierten Wrapper based API Migration und testeten mit 697 TestCases. Verschiedene Adaption Levels:
- 1: basic delegation, mit (un)wrapping, Argument permutationen und einfügen von Konstanten Argumenten
- 2: zusätzlich vorverarbeiten von Argumenten (Konversion, check), Resultate nachbearbeitet, Exceptions abgefangen oder geworfen usw.
- 3: irregular method: beliebig viele Zielmethoden können nötig sein, aber keine Methoden des Ziel APIs müssen reImplementiert werden
- 4: Zielmethoden müssen reimplementiert werden weil sie etwas anders machen
Anya helene Bagge. Yet Another Language Extension Scheme
Magnolia Sprache ist als Compilation durch Trasformation implementiert. Hier wird Magnolia mit transformation-based MetaFeatures versehen, so dass die Sprache sich selbst erweitern kann.
useful extensions, z.B.
- new operation like constructs, die wie normale Prozeduren/Funktionen aussehen, aber nicht so implementiert werden sollten
- neue Syntax um die Sprache praktischer zu machen
- Features abstellen, oder mit zusätzlichen Checks versehen
- non local changes - features die globale Analysis brauchen usw.
- Operation Patterns = einfach Language extensions, ähnlich wie Macros in Lisp
- Implementation sieht aus wie ein Prozedur, aber mindestens ein Parameter enthält eine MetaVariables (für expressions oder statement terms). Damit kann man die expressions/statements transformieren
- MetaVariables werden durch das TypeSystem von normalen Variabeln unterschieden (also kein anti-quotation nötig!)
- die semantischen Eigenschaften eines Operation Patterns wird automatisch durch den Compiler, TypeSystem usw. behandelt
- Transforms
- arbeiten auf der Term Repräsentation eines Programmes und erzeugen eine Replacement Term. Nach der semantischen Analyse ist Term Matching in Transforms sensitiv auf Ttyping, overloading und scoping.
- ein Transform kann andere Transforms und Operationen und kann auch die SymbolTable des Compiler usw. manipulieren.
- where Bedingung für Patternmatching
- Mehere Transforms können denselben Namen haben und werden eine nach der anderen versucht, bis eine succeeded
- modifiers um traversals zu steuern, oder compilerphasen auszuwählen
- semantische Regeln (TypeCheck usw.) können auch als Transforms geschrieben werden
- z.B. TypeCheck und automatische Type Casts
Jeronimo Irazabal, Claudia Pons. Model Transformation Languages Relying on Models as ADTs.
- MetaModel MM = (C, A, R, s, a, r) = (Classes, Attributes, References, superclass s: C → C, attributes a: A → C, reference r; R → C x C)
- Model M = (MM, E, c, va, vr) = (MetaModel wie oben, E Elements, class c: E→C, value: va ExA→value oder bottom, reference vr:ExR→E*)
- Funktionen und Operationen um durh M zu navigieren, oder das Modell zu ändern: Elemente löschen hinzufügen, Referenzen verkleinern/Vergrössern usw.
- denotional semantics dazu
damit bekommt man eine ModellTransformationsLanguage in einem mittleren Abstraktionsgrad, unter formaler Spezifikation aber allgemeiner als DomainSpecific ModelTransformations
August Schwerdfeger, Eric Van Wyk. Verifiable Parse Table Composition for Deterministic Parsing
In eine Host Grammatik (Java) eine Extension (SQL) einbetten:
- bridge production: ntH --> tE ntE, das heisst wir fügen eine neue Variante eines NonTerminal des Host hinzu, über ein ExtensionMarkingSymbol tE, dem eine Extension Production folgt (wohl wie in Prolog, indem man mehrere Produktion mit oder verknüpft)
- dann wird gezeigt, wie man die ParseTable und Scanner verknüpft, und welche Bedingung nötig sind um Konflikte zu verhindern
- diese ParseTableComposition wäre auch zur Laufzeit effizient möglich - im Gegensatz zur Compilation einer zusammengesetzten Grammatik
Maartje de Jonge, etc.. Natural and Flexible Error Recovery for Genereated Parsers
- use layout, insbesondere intendation für error analysis und recovery
- z.B. fehlende } könnnen häufig aufgrund der Intendation erraten werden