DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

Ähnliche Dokumente
Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Vorgetragen von. Sanaz Mostowfi Anna Polovets Mandy Neumann

DSL Entwicklung und Modellierung

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

WhiteStarUML Tutorial

Modellierung & Domänen Spezifische Sprachen (DSL)

Andreas Lux Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse

Quelltextähnlichkeit

Einführung in die Programmierung

EMF-GMF-Tutorial: Petrinet

Software Engineering II

1. Formale Sprachen 1.2 Grammatiken formaler Sprachen

Auswahlabfragen mit ACCESS

Die Nuance-Grammatik und der Grammar Builder

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Grundbegriffe der Informatik

Diana Lange. Generative Gestaltung Operatoren

Wenn man nach Beendigung der WINDOWS-SICHERUNG folgendes angezeigt bekommt

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

Visuelle DSLs Trends in der Softwaretechnik: Domänenspezifische Sprachen (Seminar WS 2010/11) Thorsten Arendt

Kapitel 4. Einführung in den Scannergenerator Flex. Einführung in den Scannergenerator Flex Wintersemester 2008/09 1 / 9

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Werkzeuge der Informatik UNIX

Einführung in die Programmierung

UML-DSLs effizient eingesetzt. Insight 07, Klaus Weber

Multimedia Technologie II

Alle Felder, die nicht "aufgeklappt" sind, können allenfalls, müssen aber nicht erfasst werden. Bei Fragen:

Contao Schulung. Martin Kozianka Donnerstag,

Symbolbearbeitung mit EPLAN 5.60/5.70 DIC_***D.SYM

Dokumentation. Passwortgeschützte Website anlegen. Typo3 Dokumentation: passwortgeschützte Seiten Seite 1 von 18

Mathematische Grundlagen der Informatik 2

Arbeiten mit UMLed und Delphi

State Machine Workflow mit InfoPath Formularen für SharePoint 2010 Teil 6

IT-Basics 2. DI Gerhard Fließ

Objektorientierte Programmierung

WPF Bindung. Dr. Beatrice Amrhein

Professionelle Seminare im Bereich MS-Office

Comparing Software Factories and Software Product Lines

Faktor-IPS. Modellgetriebene Softwareentwicklung mit Faktor-IPS. Faktor Zehn AG. Seite 1

Domainspezifische Sprachen

Einführung in die Java- Programmierung

AutoTexte und AutoKorrektur unter Outlook verwenden

Software Engineering Interaktionsdiagramme

Programmierkurs Java

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Programmiersprachen und Übersetzer

Dokumentation. Passwortgeschützte Webseite anlegen

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Verwendung von QR-Codes zum Teilen von digitalen Rezepten in Printmedien mittels der Recipe Packaging Toolbox von My Own Cookbook

SPS-Bearbeitung mit EPLAN 5.70

Intelligentes Rechnungsformular Physiotherapie

Grafischer Tischeplan

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Entwicklung mit Arbortext Editor 6.1

TYPO3-Schulung für Redakteure Stand:

Abwesenheitsnotiz im Exchange Server 2010

Password Depot für ios

teischl.com Software Design & Services e.u. office@teischl.com

Dokumentenverwaltung im Internet

Access Grundlagen für Anwender. Andrea Weikert 1. Ausgabe, 1. Aktualisierung, Juli inkl. zusätzlichem Übungsanhang ACC2010-UA

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

... MathML XHTML RDF

NEUES BEI BUSINESSLINE WINDOWS

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Software Engineering II

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Jochen Bauer

Generisch entwickelte Software-Werkzeuge anpassbar wie ein Chamäleon

Kennen, können, beherrschen lernen was gebraucht wird

Einführung Computerlinguistik. Konstituentensyntax II

Modellierung statischer Domänenmodelle mit Xtext

Parser4Kids interaktive Lernumgebung

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Berechnungen in Access Teil I

Security. Stefan Dahler. 4. Internet Verbindung. 4.1 Einleitung

Anleitung über den Umgang mit Schildern

2) Geben Sie in der Anmeldemaske Ihren Zugangsnamen und Ihr Passwort ein

Grammatiken in Prolog

Beispiel 19. December 4, 2009

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Wie viel Cross-Channel braucht unser Markt? ECC Forum Köln

Einführungskurs MOODLE Themen:

Blumen-bienen-Bären Academy. Kurzanleitung für Google Keyword Planer + Google Trends

LineQuest-Leitfaden LineQuest Dialog-Portal. Generieren der LineQuest-Auswertungsdatei

Kurzanleitung. Kirschfestverein Naumburg e.v. t e c h n ische Abt e i lung. für Benutzer des CMS der Domain:

Dokumentation für das Checkoutsystem von Freshworx

Handout 6. Entwicklung von Makros

GEONET Anleitung für Web-Autoren

Qualitätssicherung bei der mobilen Datenerfassung

Prüfung Computation, Programming

Visual Basic Express erstes Projekt anlegen

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

AutoSPARQL. Let Users Query Your Knowledge Base

Redaktionssystem E-MODE. Handbuch für RedakteurInnen. Inhalt. Informationen über E-MODE, Standards & Regeln:

Kleine Einführung in die lineare Regression mit Excel

Transkript:

DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH

Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2

Was sind DSLs? Domain Specific Languages für einen Anwendungsfall (Domäne) entworfen Grafisch oder textuell 3

XTEXT KONZEPTE 2012 anderscore GmbH

Die Idee DSL Workbench für textuelle DSLs + Codegenerierung Grammatik in EBNF Xpand / Xtend2 Generatoren EMF basiertes Modell Basis: Eclipse (RCP + JDT + EMF) Linker für Referenzen im Modell ANTLR Parsergenerator generiertes Tooling 5

Sprache definieren Xtext Build Xtext Grammatik (EBNF*) ANTLR Grammatik generieren ANTLR Grammar Parser mit ANTLR generieren DSL Parser Tools generieren (Editor, Validator, Outline etc.) Editor Tool Framework Generatorvorlage EMF Metamodel (Ecore) *EBNF: Erweiterte Backus-Naur Form (Form in der Grammatiken beschrieben werden) 6

Modell erstellen + nutzen Mit generiertem Editor erstellen Textuelles Modell Generierter Parser Linker Modellinstanz des EMF Metamodels Technische Artefakte Xpand o. Xtend2 basierter Generator 7

Parser und Aufbau von Grammatiken EINFÜHRUNG INS SPRACHDESIGN 2012 anderscore GmbH

Grammatiken DSLs sind formale Sprachen Formale Sprachen werden durch Grammatiken beschrieben Struktur der Grammatik ist ein AST Abstract Syntax Tree 9

Parser Phasen Terminal Rules EBNF Ausdrücke Parser Rules EBNF Ausdrücke Cross Reference Rules EMF basierte Validatoren Lexing Parsing Linking Validation Tokens Parse- Trees / AST aus EObjects Referenzen zwischen EObjects des AST 10

Terminal Rules Lexing Der Lexer braucht eine Beschreibung der elementaren Textbausteine Terminal: atomares Element (Token) einer Grammatik Gruppieren Zeichenfolgen zu Tokens gelten überall Lexer erzeugt einzelne Tokens anhand von Terminal Rules Bsp.: terminal ID : ('^')? ('a'..'z' 'A'..'Z' '_') ('a'..'z' 'A'..'Z' '_' '0'..'9')*; Eine ID besteht aus Buchstaben, Ziffern und _, beginnt immer mit einem Buchstaben oder ^ und einem Buchstaben 11

Ausdrücke Lexing Parsing Grammatiken benötigen Ausdrücke Erweiterte Backus Naur Form Kardinalitäten festlegen: kein Operator (Default) genau einmal? optional + beliebig oft, mind. einmal * beliebig oft, optional ( ) zum Festlegen der Assoziativität der Ausdrücke (Gruppierung) 12

Ausdrücke Teil2 Character Ranges:.. Bsp.: terminal INT returns ecore::eint: ('0'..'9')+; Lexing Parsing Wildcards:. (Punkt) hier kann ein beliebiges Zeichen stehen Alternativen: getrennt durch Bsp.: terminal WS : (' ' '\t' '\r' '\n')+; 13

Parser Rules Parsing Parser Rules beschreiben die Struktur State name State: 'state' name=id state ID Parser Rules sind kontextuell (gelten nicht überall) 14

Parser Rules - Schlüsselwörter Schlüsselwörter helfen Strukturen zu erkennen Parsing Art von Terminal Rules stehen in Bsp.: keyword keyword ist Schlüsselwort, hilft dem Parser beim Erkennen der anzuwendenden Parser Rule 15

Rule Calls Rules kann man wiederverwenden Parsing Regel aus anderen Regeln aufrufen Entsprechen einer EMF EClass des Metamodels Bsp.: terminal DOUBLE : INT '.' INT; INT ist eine andere Terminal Rule => ein DOUBLE besteht aus einem INT, einem Punkt und noch einem INT 16

Parser Rules - Assignments Parsing Durch Zuweisungen werden Werte im Modell (AST) gehalten Wert einem Attribut zuweisen = einfache Zuweisung += Listenzuweisung, mind. Ein Element =? Boolsche Zuweisung, Wert true, wenn rechte Seite der Regel vorhanden Bsp.: State : 'state' name=id ('actions' '{' (actions+=[command])+ '}')? (transitions+=transition)* 'end ; Attribut name bekommt Wert des Terminals ID zugewiesen 17

Enum Rules Aufzählung gültiger Werte Erzeugen eine EMF Enumeration Parsing Bsp.: enum ChangeKind : ADD MOVE REMOVE ; Überall wo ein ChangeKind stehen kann, kann ADD, MOVE o. REMOVE stehen 18

Cross References Linking Cross Refs verknüpfen Modellelemente zu einem Graph Attribut erhält Querverweis auf anderes Modellelement verweisen auf andere Parser Rule in eckigen Klammern Auflösung erfolgt beim Linking Linking per Default anhand des Wertes im Attribut name Bsp.: Transition : ; event=[event] '=>' state=[state] Attribut event verweist auf eine Instanz von Event, im Text steht die ID (der Name) des Events 19

HANDS ON 2012 anderscore GmbH

Referenzen Xtext SDK http://www.eclipse.org/xtext/download.html 21