Präsentation herunterladen
Veröffentlicht von:Kunigunde Wicklein Geändert vor über 10 Jahren
1
Entwurf, Implementierung und Integration eines C# Struktureditors
Kirill Osenkov BTU Cottbus, Lehrstuhl Programmiersprachen und Compilerbau 4. Juli 2007
2
Inhalt Texteditoren: Übersicht Was ist ein Struktureditor?
Demo des Struktureditors Eigenschaften der Struktureditoren Integration mit SharpDevelop IDE Architektur Ausblick
3
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
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
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
Ziel übersichtliche Darstellung des Programms bequemes Editieren
Produktivität des Entwicklers
7
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
Entwicklungsumgebungen
Editor ist Hauptbestandteil einer IDE Intelligente IDE Features: Vervollständigung Debugging Fehleranzeige
9
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
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
Struktureditor Demo
12
Struktureditor Demo
13
Struktureditor Demo
14
Unterschied in der Architektur
Texteditor Quelltext Parser Syntaxbaum (AST) Codegenerator Binäre Dateien
15
Unterschied in der Architektur
Texteditor Struktureditor Quelltext Parser Syntaxbaum (AST) Codegenerator Binäre Dateien
16
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
Eigenschaften: atomare Operationen
der Editor operiert mit ganzen Sprachkonstrukten Transaktionen und Undo/Redo Geschichte der Aktionen
18
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
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
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
Eigenschaften: Visualisierung
Controls eingebettet in Code: Quelle: Martin Plante, Mitch Denny in “Orcas Code Builders”
22
Eigenschaften: Visualisierung
Controls eingebettet in Code: Quelle: Lutz Roeder,
23
Eigenschaften: Visualisierung
Controls eingebettet in Code: Quelle: Lutz Roeder,
24
Eigenschaften: Visualisierung
Controls eingebettet in Code: Quelle: Lutz Roeder,
25
Architektur
26
Architektur Framework für Struktureditoren Struktureditor
Utils Canvas Controls Core Struktureditor CSharpBlocks Host-Anwendung für den Editor (z.B. IDE) StructuredEditor (SharpDevelop IDE) CSharpEditor (alleinstehend)
27
Architektur StructuredEditor add-in SharpDevelop CSharpBlocks
Framework für Struktureditoren
28
SharpDevelop
29
Endprodukt: Editor in SharpDevelop
30
Demo: Vervollständigung
using int i = 0 Console.WriteLine(i.ToString()) foreach char c in wow c sichtbar i unsichtbar MainClass c = new MainClass() public void Foo c.Foo andere Datei -> c.Foo andere Datei -> class Bar Bar b
31
Editor (alleinstehend)
32
Implementierung: Blöcke
33
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
Blöcke des Frameworks Das Framework für Struktureditoren definiert Basisklassen für Blöcke, von denen man erben kann
35
Block Klassenhierarchie
36
Textblöcke
37
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
Schichtenarchitektur
Framework CSharpBlocks
39
Typ-deklarationen
40
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
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
Mehr Informationen
43
Ende Vielen Dank für Ihre Aufmerksamkeit! Fragen?
44
Zusätzliche Folien Ich habe nicht alles erzählt, was ich weiss
noch ein paar Trümpfe im Ärmel!
45
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
Erkenntnisse über IDE Architektur
Man braucht erweiterbare AST Datenstruktur Observable AST Model-View-Controller
47
Forschung auf dem Gebiet
1980’er – Modula, Pascal Synthesizer Generator Intentional Programming Language Oriented Programming, LOP, Language Workbenches JetBrains MPS Roedy Green – SCID Lava und LavaPE
48
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.