Entwurf, Implementierung und Integration eines C# Struktureditors

Slides:



Advertisements
Ähnliche Präsentationen
Die Schulkonsole für Lehrerinnen und Lehrer
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Vorteile der Online-Produkte
Telefonnummer.
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
-17 Konjunkturerwartung Europa September 2013 Indikator > +20 Indikator 0 a +20 Indikator 0 a -20 Indikator < -20 Europäische Union gesamt: +6 Indikator.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Java: Grundlagen der Sprache
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Betreuerin: Kathleen Jerchel
Libra June 2005 Community Technology Preview Peter Bachmann Kirill Osenkov Steffen Büchner.NET Projektstudium, BTU Cottbus.
Differentieller Stromverstärker
Schieferdeckarten Dach.ppt
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele
2 Distanzbasierte Sprachkommunikation für Peer-to-Peer-Spiele.
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
„Küsse deine Freunde“ – FlexKom-App teilen
Zusatzfolien zu B-Bäumen
SK / , , in Hochkössen und der Wildschönau flow Ski- und Snowboardschule Intersport Menzel.
Leistungsbeschreibung Brückenplanung RVS RVS
Schulung Bebauungplanung mit
Syntaxanalyse Bottom-Up und LR(0)
Generalisierung/Spezialisierung Subtypisierung/Vererbung
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Birdwatch Start Mit deinem Feldstecher entdeckst du auf einer Exkursion viele Vogelarten. Kennst du sie alle? Vogelquiz Birdwatch.
PROCAM Score Alter (Jahre)
Das ist die Geschichte eines kleinen Jungen aus der Schweiz.
Symmetrische Blockchiffren DES – der Data Encryption Standard
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES KULTURELLER ZUSAMMENHALT UND AUSDEHNUNG DER IDEEN AUF EUROPÄISCHEM.
Großer Altersunterschied bei Paaren fällt nicht auf!
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
GMF (Graphical Modeling Framework)
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
+21 Konjunkturerwartung Europa Dezember 2013 Indikator > +20 Indikator 0 bis +20 Indikator 0 bis -20 Indikator < -20 Europäische Union gesamt: +14 Indikator.
Pigmentierte Läsionen der Haut
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
1 Mathematical Programming Nichtlineare Programmierung.
Technische Frage Technische Frage Bitte löse die folgende Gleichung:
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Einfu ̈ hrung in die Weltwirtschaftspolitik Helmut Wagner ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH, Mu ̈ nchen Abbildungsübersicht.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Es war einmal ein Haus
Sportverletzungen Fussgelenk-Tapeverband
J-Team: Gymnasium Ulricianum Aurich und MTV Aurich Ein Projekt im Rahmen von UlricianumBewegt.de Euro haben wir schon…  8000 mal habt ihr bereits.
Kompetenztraining Jura Martin Zwickel / Eva Julia Lohse / Matthias Schmid ISBN: © 2014 Walter de Gruyter GmbH, Berlin/Boston Abbildungsübersicht.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
Monatsbericht Ausgleichsenergiemarkt Gas – November
 Präsentation transkript:

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

Inhalt Texteditoren: Übersicht Was ist ein Struktureditor? Demo des Struktureditors Eigenschaften der Struktureditoren Integration mit SharpDevelop IDE Architektur Ausblick

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

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”

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

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

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

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

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)

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

Struktureditor Demo

Struktureditor Demo

Struktureditor Demo

Unterschied in der Architektur Texteditor Quelltext Parser Syntaxbaum (AST) Codegenerator Binäre Dateien

Unterschied in der Architektur Texteditor Struktureditor Quelltext Parser Syntaxbaum (AST) Codegenerator Binäre Dateien

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

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

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

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

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

Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Martin Plante, Mitch Denny in “Orcas Code Builders”

Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Lutz Roeder, www.aisto.com/roeder/paper

Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Lutz Roeder, www.aisto.com/roeder/paper

Eigenschaften: Visualisierung Controls eingebettet in Code: Quelle: Lutz Roeder, www.aisto.com/roeder/paper

Architektur

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)

Architektur StructuredEditor add-in SharpDevelop CSharpBlocks Framework für Struktureditoren

SharpDevelop

Endprodukt: Editor in SharpDevelop

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

Editor (alleinstehend)

Implementierung: Blöcke

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

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

Block Klassenhierarchie

Textblöcke

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

Schichtenarchitektur Framework CSharpBlocks

Typ-deklarationen

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

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

Mehr Informationen www.osenkov.com/diplom

Ende Vielen Dank für Ihre Aufmerksamkeit! Fragen?

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

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

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

Forschung auf dem Gebiet 1980’er – Modula, Pascal Synthesizer Generator Intentional Programming Language Oriented Programming, LOP, Language Workbenches JetBrains MPS www.programtree.com Roedy Green – SCID Lava und LavaPE

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