Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

BTU Cottbus, Lehrstuhl Programmiersprachen und Compilerbau 4. Juli 2007 Entwurf, Implementierung und Integration eines C# Struktureditors Kirill Osenkov.

Ähnliche Präsentationen


Präsentation zum Thema: "BTU Cottbus, Lehrstuhl Programmiersprachen und Compilerbau 4. Juli 2007 Entwurf, Implementierung und Integration eines C# Struktureditors Kirill Osenkov."—  Präsentation transkript:

1 BTU Cottbus, Lehrstuhl Programmiersprachen und Compilerbau 4. Juli 2007 Entwurf, Implementierung und Integration eines C# Struktureditors Kirill Osenkov

2 2 / 43 Inhalt 1.Texteditoren: Übersicht 2.Was ist ein Struktureditor? 3.Demo des Struktureditors 4.Eigenschaften der Struktureditoren 5.Integration mit SharpDevelop IDE 6.Architektur 7.Ausblick

3 3 / 43 Texteditoren Hauptdatenstruktur: ein Strom von Zeichen ein Array von Textzeilen Nutzer trennt Sprachkonstrukte voneinander ab mittels spezieller Syntax Zeichen wie { }, ; // und Formattierung Tipps für den Compiler

4 4 / 43 Probleme der Texteditoren Editieroperationen sind lang erst selektieren, dann Operation anwenden nicht atomar viel Tippen - Hilfszeichen Syntaxkorrektheit muss durch Programmierer sichergestellt werden Compiler ist nur ein Sicherheitsnetz

5 5 / 43 Probleme der Texteditoren (2) Darstellung eines Programm als Text ist nicht immer optimal Sprachkonstrukte werden durch Syntax abgetrennt Syntax muss gelernt werden Programmierer müssen sich um die Formattierung kümmern Unterschiedliche Stilfibel und Codierrichtlinien

6 6 / 43 Ziel übersichtliche Darstellung des Programms bequemes Editieren Produktivität des Entwicklers

7 7 / 43 Aufgaben einen Struktureditor implementieren Plattform: Microsoft.NET 2.0 Zielsprache: Untermenge von C# 1.0 als Komponente in eine Entwicklungsumgebung integrieren Wahl der IDE: SharpDevelop Open-Source gute Architektur, gute Erweiterbarkeit

8 8 / 43 Entwicklungsumgebungen Editor ist Hauptbestandteil einer IDE Intelligente IDE Features: Vervollständigung Debugging Fehleranzeige

9 9 / 43 Texteditoren operieren auf Zeilen von Text benutzen die Syntax (spezielle Zeichen) zur Abgrenzung von Sprachkonstrukten { } ; BEGIN … END Informationen über das editierte Programm werden durch Scanner und Parser gewonnen es entsteht ein Syntaxbaum (AST)

10 10 / 43 Struktureditor operiert auf Sprachkonstrukten direkt der Syntaxbaum wird visuell dargestellt jede Editieroperation modifiziert den Baum direkt kein Parser notwendig das Programm ist zu jedem Zeitpunkt: korrekt oder kann zu einem korrekten Programm vervollständigt werden

11 11 / 43 Struktureditor Demo

12 12 / 43 Struktureditor Demo

13 13 / 43 Struktureditor Demo

14 14 / 43 Unterschied in der Architektur Texteditor QuelltextSyntaxbaum (AST)Binäre Dateien ParserCodegenerator

15 15 / 43 Unterschied in der Architektur Texteditor QuelltextSyntaxbaum (AST) Struktureditor Binäre Dateien ParserCodegenerator

16 16 / 43 Vorteile der Struktureditoren: für Nutzer des Editors Nutzbarkeit weniger Tastendrücke notwendig Editor übernimmt Syntax und Formattierung für Entwickler des Editors und der IDE bessere Implementierung einfacher, klarer, übersichtlicher erweiterbar flexibler

17 17 / 43 Eigenschaften: atomare Operationen der Editor operiert mit ganzen Sprachkonstrukten Transaktionen und Undo/Redo Geschichte der Aktionen

18 18 / 43 Eigenschaften: Korrektheit Syntaxfehler vermeiden Typisierung garantiert den korrekten Aufbau des Programms Immer korrekt geklammert dank Einbettung von Blöcken Eine Liste von möglichen Sprachkonstrukten und Ergänzungen Randbedingungen / Einschränkungen

19 19 / 43 Eigenschaften: Nutzbarkeit Größtes Problem bei Struktureditoren Lösbar durch Mischung aus Text und Struktur Hybrid Editoren Mehr Kenntnisse über das Programm intelligentere Hilfe und Vervollständigung der Editor übernimmt die Formattierung wenige Tastendrücke bessere Nutzbarkeit

20 20 / 43 Eigenschaften: Visualisierung Trennung Inhalt / Darstellung Analog zu XHTML / CSS Model-View-Controller (MVC) Sichten Codierrichtlinien automatische Formattierung und Umformattierung eigene Richtlinien anwendbar bessere Anzeigemöglichkeiten Zuklappen Filtern Sortieren

21 21 / 43 Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Martin Plante, Mitch Denny in Orcas Code Builders

22 22 / 43 Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Lutz Roeder,

23 23 / 43 Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Lutz Roeder,

24 24 / 43 Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Lutz Roeder,

25 25 / 43 Architektur

26 26 / 43 Architektur Framework für Struktureditoren Utils Canvas Controls Core Struktureditor CSharpBlocks Host-Anwendung für den Editor (z.B. IDE) StructuredEditor (SharpDevelop IDE) CSharpEditor (alleinstehend)

27 27 / 43 Architektur StructuredEditor add-in SharpDevelopCSharpBlocks Framework für Struktureditoren

28 28 / 43 SharpDevelop

29 29 / 43 Endprodukt: Editor in SharpDevelop

30 30 / 43 Demo: Vervollständigung

31 31 / 43 Editor (alleinstehend)

32 32 / 43 Implementierung: Blöcke

33 33 / 43 Datenstruktur: Blöcke Bausteine eines Struktureditors Modellieren Sprachkonstrukte Bilden eine Hierarchie durch Schachtelung Instanzen von ContainerBlock können zur Laufzeit Instanzen von beliebigen Block Klassen beinhalten

34 34 / 43 Blöcke des Frameworks Das Framework für Struktureditoren definiert Basisklassen für Blöcke, von denen man erben kann

35 35 / 43 Block Klassenhierarchie

36 36 / 43 Textblöcke

37 37 / 43 Editor-spezifische Blöcke Der Editor definiert eigene Blöcke zum Modellieren von C# Sprachkonstrukten Die Blöcke erben von den Grundblöcken des Frameworks

38 38 / 43 Schichtenarchitektur Framework CSharpBlocks

39 39 / 43 Typ-deklarationen

40 40 / 43 Implementierte Funktionalität Blöcke: Datenstruktur und Operationen Darstellung auf dem Bildschirm Fokus und Navigation Transactionssystem (Undo/Redo) Drag & Drop, Copy & Paste Vervollständigung Import von Blöcken aus C# Quellcode Generieren von C# Quellcode aus Blöcken Kontext-Hilfe

41 41 / 43 Ausblick Generieren von Editoren aus einer Grammatik (Editor für Editoren) Einbettung von Sprachen MDA, DSL, Language Workbenches Erweitern der Programmiersprache, ohne die Programmiersprache zu erweitern Metaprogrammierung (generative) Markup Sprachen (HTML, XML, etc.) Epigram

42 42 / 43 Mehr Informationen

43 43 / 43 Ende Vielen Dank für Ihre Aufmerksamkeit! Fragen?

44 44 / 43 Zusätzliche Folien Ich habe nicht alles erzählt, was ich weiss noch ein paar Trümpfe im Ärmel!

45 45 / 43 Erkenntnisse über IDE Architektur Editor: Black-Box Round-tripping notwendig operiert nicht auf AST Compiler: Black-Box Keine Programmierschnittstelle AST ist intern keine Integrationsmöglichkeiten Werkzeuge müssen Compiler neu-implementieren

46 46 / 43 Erkenntnisse über IDE Architektur Man braucht erweiterbare AST Datenstruktur Observable AST Model-View-Controller

47 47 / 43 Forschung auf dem Gebiet 1980er – Modula, Pascal Synthesizer Generator Intentional Programming Language Oriented Programming, LOP, Language Workbenches JetBrains MPS Roedy Green – SCID Lava und LavaPE

48 48 / 43 Nachteile der Struktureditoren ungewohnt Nutzbarkeit? weniger Flexibilität und Freiheit muss inkorrekte Zwischenzustände des Programms erlauben muss erlernt werden viel komplexer zu implementieren als ein Texteditor große Plattformabhängigkeiten


Herunterladen ppt "BTU Cottbus, Lehrstuhl Programmiersprachen und Compilerbau 4. Juli 2007 Entwurf, Implementierung und Integration eines C# Struktureditors Kirill Osenkov."

Ähnliche Präsentationen


Google-Anzeigen