2010-07-28 12 views

Antwort

7

They are different in term of document storing the metamodel.

In Bezug auf XText, this article eine Nutzung zeigt, wenn es darum geht, und Ihre eigenen Programmiersprachen und domänenspezifische Sprachen (DSLs) zu erstellen.

Sobald Sie eine Sprache haben, möchten Sie sie verarbeiten und dies bedeutet normalerweise, Ihr Modell in eine andere Darstellung zu transformieren.
Die Einrichtung, die für diese Transformation verantwortlich ist, heißt Generator und besteht aus einer Reihe von Transformationsvorlagen (z. B. ) und einem Code, der sie ausführt. Bei einem Ereignis wird das Modell eingelesen und die Transformationen werden angewendet, um Code zu erzeugen.

Example of such a model transformation:

dot3zest, die mit einem Punkt auf Zitruszeste Interpreter kommt (die jetzt die Xtext Schalter-API für die DOT Grammatik erzeugten verwendet) ist die Unterstützung für Ad-hoc-Kantendefinitionen DOT.

alt text


MPS Bezug haben Sie here a serie of practical examples,
wie diese code generation to GPL such as Java, C#, C++ or XML:

alt text

+0

Hinweis: Eine [Konferenz im Oktober 2010] (http://www.voelter.de/conferences/index/detail803128037.html) wird ein praktisches Beispiel mit beiden Frameworks veranschaulichen. Zu den Unterschieden siehe [auch hier] (http://lambda-the-ultimate.org/node/3994#comment-60524) – VonC

+0

Ist die Code-Generierung das ultimative Ziel oder sehe ich es nicht weit genug? –

+0

@ S.R: nein das ultimative Ziel bleibt die Modelltransformation. Sie transformieren einen AST (abstrakter syntax-Baum) in einen anderen und das gibt Ihnen: Code (Codegenerierung) oder Knoten (der Knotengraph in den ersten Beispielen) oder irgendeinen anderen AST, der das darstellt, was auch immer das Zielmodell haben soll . – VonC

11

Wir haben ganze bug tracker mit MPS. Code-Generierung ist nicht das Ziel, sondern bedeutet, etwas ausführbaren Code zu bekommen. Ziel ist es, Entwicklern ein Werkzeug zu geben, mit dem sich DSLs mit minimalem Aufwand erstellen lassen.

Cool an MPS ist, dass es Ihnen auch eine IDE für Ihre Sprache bietet. Und verschiedene von Ihnen erstellte DSLs sind kompatibel, d. H. Sie können DSL erstellen, das Java um Schließungen erweitert, und ein anderes DSL, das externe Methoden ermöglicht, und diese Erweiterungen werden zusammenarbeiten.

+0

Könnten Sie mir bitte helfen, eine Schließung für Java zu finden? Ich kann einige Beispiele nicht finden, wie man Java Synthax erweitert. –

+0

Um Closures für Java in MPS zu verwenden, müssen Sie nur die Sprache jetbrains.mps.baseLanguage.closures importieren –

1

Ich denke, der Haupteinsatz von XText besteht darin, zuerst eine DSL aus der von Ihnen definierten Grammatik zu erstellen und eine Eclipse-Workbench automatisch für Sie zu generieren. Zweitens kann es das in Ihrem DSL geschriebene Skript in Java umwandeln. Die eingebauten Ausdrücke von XText2 sind ein Plus. Das Framework bietet Ihnen eine kostenlose IDE, um Ihre geschriebene DSL zu unterstützen, die Sie erstellt haben. Und das DSL ist das ultimative Produkt. Es kann verwendet werden, um die Regeln und Logiken aus der realen Welt zu abstrahieren. Zum Beispiel in unserem Projekt die Produktkonfigurationsregel. Nur der Fachmann kennt sie, also schreiben sie etwas in die DSL, die du erstellst.