Was sind die Hauptunterschiede zwischen den Abgeordneten von Jetbrains und Eclipse Xtext?

StackOverflow https://stackoverflow.com/questions/2603134

  •  25-09-2019
  •  | 
  •  

Frage

Ich habe benutzt Eclipse Xtext in mehreren Projekten. Ich mochte es, eine Grammatik über ein Ecore -Modell (Meta) zu definieren und alles zu lassen, was für Sie generiert wurde, einschließlich eines fantastischen Eclipse -Plugin -Editors, aber ich war mir mit dem zugrunde liegenden ziemlich unangenehm EMF -Framework mit allem in statischen Feldern fest verdrahtet.

In letzter Zeit bin ich auf Jetbrains gestoßen MPS (Meta -Programmiersystem). Es basiert auf völlig anderer Philosophie. Während XText zum Erstellen von textbasiertem DSLs dient, um einen Parser für Sie zu generieren (und diese eObjects), bearbeitet man in der MPS-geschaffenen Sprache eine direkt zugrunde liegende Modellstruktur. Bisher verstehe ich es.

Hat jemand mit beiden DSL -Tools Erfahrung, um die Hauptunterschiede in Bezug auf die Arbeit mit ihnen, beabsichtigte Anwendungsfälle und Publikum, Komplexität, Lernkurve (um ehrlich zu sein, um XText zu verwenden. , Codegenerierung usw.?

War es hilfreich?

Lösung

XText ist ein traditioneller Parser-basierter Ansatz, der mit gewöhnlichen Textdateien funktioniert. Diese können verschickt, gespeichert und mit jedem Versionskontrollsystem verglichen werden und sogar außerhalb des Editors mit Ihrem bevorzugten Befehlszeilen -Tool geändert werden. Es integriert sich eng in die EMF in Eclipse und funktioniert ziemlich gut in eine ganze Reihe von Werkzeugen, die Sie im Eclipse Eco-System finden können. In jüngster Zeit hat es sich zu einer Art "Programmiersprachentwicklungs -Toolkit" entwickelt (und wird dies immer noch), bei dem Sie alle Arten von zusätzlichen Werkzeugen unterstützen können.

Abgeordnete auf der anderen Seite arbeiten mit einem projektionsbasierten Editor zusammen, der nur einen Text "aussieht", während Sie in der Umgebung arbeiten. Das zugrunde liegende Speicherformat ist Toolspezifisch (lesen Sie ohne spezielle Programme) und analysiert keine einfachen Textdateien. Dies bietet einige großartige Vorteile, wie z. B. die Einbettung willkürlicher Langaugen (z. B. Regex in SQL in Java). Die Toolchain ermöglicht die Erzeugung in Form von Modell, um Transformationen zu modellieren, die sich am Anfang ungewöhnlich anfühlen, aber auch mächtig sind.

Beide Tools sperrten Sie irgendwie in ihre Welt (MPS/Eclipse). Auch wenn Sie beide in einem kopflosen Modus ausführen können, kann man den XText -Editor in einer anderen IDE nicht leicht starten. Gleiches gilt für MPS. Ich würde argumentieren, dass XText "offener" ist, da es einerseits mit gewöhnlichen Textdateien funktioniert und mit etablierten Tools (EMF und Eclipse im Allgemeinen) gut abspielt.

Beantwortet das deine Frage? Ich werde versuchen, Ihnen genauere Antworten zu geben, wenn Sie detailliertere Fragen haben.

Andere Tipps

Die Hauptidee von MPS verwendet keinen Projekteditionseditor anstelle eines textbasierten. Es ist die Sprachkompasabilität. Zum Beispiel können Sie Java mit Tupeln erweitern, und eine andere Person könnte Java mit asynchronen Methodenaufrufen erweitern. In textbasierten Tools (wie XText) ist es unmöglich zu garantieren, dass zwei Erweiterungen gut zusammenarbeiten, da die resultierende Grammatik möglicherweise eindeutig ist. MPS macht dies möglich. Sie fügen Ihrem Projekt nur Sprache hinzu, wie Sie Bibliotheken hinzufügen.

Meiner Meinung nach ist die Abgeordneten von JetBrain anfangs einfacher zu lernen. Sie müssen nicht mit Konfigurationsdateien wie den Workflow-Files in Xtext arbeiten.

Ein Hauptunterschied besteht darin, dass Sie in MPS das Modell direkt bearbeiten und dieses Modell in einer Syntax-/Editor -Ansicht gezeigt wird. In Xtext bearbeiten Sie die Syntax und das Modell wird generiert/analysiert.

Meiner Meinung nach ist Abgeordnete mächtiger. Sie können Sprachen viel einfacher kombinieren und sie erweitern. Ein großer Vorteil von Projektionsredakteuren besteht darin, dass Sie Informationen ausblenden oder zusätzliche Informationen anzeigen können, die aus dem Modell abgerufen werden. Sie können auch verschiedene Ansichten wie Tabellen oder Diagramme verwenden (in MPS 2.1).

Die Versionskontrolle kann mit MPS durchgeführt werden. Es gibt ein Merge/Diff-Werkzeug, das auf dem Baummodell funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top