Diploma Thesis Designing, Implementing and Integrating a Structured C# Code Editor

Total Page:16

File Type:pdf, Size:1020Kb

Diploma Thesis Designing, Implementing and Integrating a Structured C# Code Editor Brandenburg University of Chair of programming languages and Technology compiler construction Diploma thesis Designing, implementing and integrating a structured C# code editor Kirill Osenkov Advisor: Prof. Dr. rer. nat. habil. Peter Bachmann Co-Examiner: Prof. Dr. rer. nat. Claus Lewerentz CR-Classification: D.2.3, D.2.6 June 1, 2007 Eidesstattliche Erklärung Hiermit versichere ich, dass ich die vorliegende Diplomarbeit selbständig angefertigt habe. Die verwendeten Hilfsmittel und Quellen sind im Literaturverzeichnis vollständig aufgeführt. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. Eingetragene Warenzeichen und Copyrights werden anerkannt, auch wenn sie nicht explizit gekennzeichnet sind. 1. Juni 2007 Cottbus 2 Abstract Programs are represented as text by most code editors. Structured editors, on the contrary, directly display the parse tree of a program as a hierarchy of embedded blocks. This way the visual layout illustrates the structure of the program and allows for atomic operations on language constructs. The structured editor lets developers avoid syntax errors and concentrate on the meaning of the program instead of formatting. In the scope of this thesis, an experimental structured editor is created for a subset of C# 1.0. It is integrated into the SharpDevelop IDE as an add-in and supports language-aware code completion. The implementation of the editor (.NET) is based on a framework specifically designed for building structured editors. The framework, the editor and the integration add-in are all documented together with the architecture and implementation details. Zusammenfassung Programme werden in den meisten Quelltexteditoren als Text repräsentiert. Strukturierte Editoren stellen dagegen den Syntaxbaum des Programms visuell als eine Hierarchie der geschachtelten Blöcke dar. Das Layout hilft dabei, die Struktur des Programms besser zu visualisieren und atomare Operationen bequem durchzuführen. Ein strukturierter Editor hilft Syntaxfehler zu vermeiden und lässt den Entwickler auf dem Inhalt statt Formattierung zu konzentrieren. In Rahmen dieser Diplomarbeit wird ein experimenteller strukturierter Editor für eine Teilmenge von C# 1.0 entworfen und implementiert. Der Editor ist mit der SharpDevelop Entwicklungsumgebung integriert und bietet kontextbasierte Code-Vervollständigung. Die Implementierung des Editors (.NET) beruht auf einem generischen Framework zur Entwicklung von strukturierten Editoren. Das Framework, der Editor und die Integration mit der Entwicklungsumgebung sowie die Architektur und Implementierungsdetails werden in dieser Arbeit dokumentiert. 3 Acknowledgements I would like to thank Professor Dr. Peter Bachmann for initiating and supporting this research. It was an enjoyment to work with such a good advisor on such an interesting project. I’d also like to thank Professor Dr. Claus Lewerentz for being a co-examiner of the thesis. Many thanks go to fellow students and friends with whom we worked together on the structured editor framework. I’m endlessly grateful to my wonderful mom. Thank you for your love and for always being there for me! Last, but not least, I thank my amazing girlfriend Vlada, for inspiring me and making me happy! Kirill Osenkov June 1, 2007 Cottbus, Germany 4 Contents: 1. INTRODUCTION .......................................................................................................................................7 1.1. TEXT VS . STRUCTURED EDITORS ............................................................................................................. 7 1.2. INTEGRATION OF AN EDITOR WITH THE IDE............................................................................................8 1.3. PRINCIPLES OF PLAIN TEXT EDITORS ....................................................................................................... 9 1.4. PRINCIPLES OF STRUCTURED EDITORS ................................................................................................... 17 1.5. DISADVANTAGES AND POSSIBLE DIFFICULTIES ..................................................................................... 25 2. EXISTING RESEARCH........................................................................................................................... 29 2.1. HISTORY ............................................................................................................................................... 29 2.2. INTENTIONAL PROGRAMMING ............................................................................................................... 31 2.3. JET BRAINS MPS ................................................................................................................................... 32 2.4. THE SYNTHESIZER GENERATOR ............................................................................................................. 33 2.5. OTHER IMPLEMENTATIONS .................................................................................................................... 33 2.6. SUMMARY ............................................................................................................................................. 34 3. FUNCTIONALITY OF THE STRUCTURED EDITOR....................................................................... 35 3.1. CREATING A PROGRAM ......................................................................................................................... 36 3.2. NAMESPACE MEMBER DECLARATIONS .................................................................................................. 39 3.3. TYPE DECLARATIONS ............................................................................................................................ 41 3.4. ACCESS MODIFIERS ............................................................................................................................... 42 3.5. CLASS AND STRUCT MEMBERS .............................................................................................................. 44 3.6. STATEMENTS ......................................................................................................................................... 47 3.7. CONTROL STRUCTURES ......................................................................................................................... 48 3.8. COMMENTS ........................................................................................................................................... 49 3.9. CODE COMPLETION ............................................................................................................................... 50 4. ARCHITECTURE..................................................................................................................................... 51 4.1. THE EDITOR FRAMEWORK .................................................................................................................... 51 4.2. UTILS .................................................................................................................................................... 53 4.3. CANVAS ................................................................................................................................................ 54 4.4. CONTROLS ............................................................................................................................................ 54 4.5. CORE ..................................................................................................................................................... 55 4.6. IMPLEMENTATION OF THE C# EDITOR ................................................................................................... 56 5. BLOCKS..................................................................................................................................................... 58 5.1. DATA STRUCTURE ................................................................................................................................. 58 5.2. TREE ORGANIZATION ............................................................................................................................ 60 5.3. OPERATIONS ON THE DATA STRUCTURE ................................................................................................62 5.4. CONTAINER BLOCK ............................................................................................................................... 63 5.5. ROOT BLOCK ......................................................................................................................................... 65 5 5.6. HC ONTAINER BLOCK , VCONTAINER BLOCK .......................................................................................... 65 5.7. LINEAR CONTAINER BLOCK ................................................................................................................... 66 5.8. TEXT BOX BLOCK ................................................................................................................................... 67 5.9. TEXT BOX BLOCK WITH COMPLETION ....................................................................................................68 5.10. LABEL BLOCK ...................................................................................................................................... 69 5.11. UNIVERSAL BLOCK .............................................................................................................................. 70 5.12. BUTTON BLOCK ..................................................................................................................................
Recommended publications
  • OS/2 Warp Catalogue
    The OS/2 Software Source: www.xeu.com/blueware/ The OS/2 Warp Catalogue The Hottest Java The Strongest Platform The OS/2 Warp Catalogue In This Catalogue Anti-virus .......................................... 4 Backup .............................................. 4 It’s Java Time CD-ROMs ........................................ 4 Communications ........................ 6 Just when you thought that OS/2 was on its way back, it is receiving a strong Database Management .......... 9 infusion from Java and the internet. Development Tools ................ 10 As Dr. Michael Cowpland, president and CEO of Corel Disk Compression .................. 14 Corporation put it: “This platform is indeed one of the Games & Entertainment ..... 19 OS/2 Warp: best operating system solutions in which to run The Hottest Corel Office for Java (http://officeforjava.corel.com/), Graphics & Multimedia ........ 20 a suite of applications that is setting the standard for The Operating System ......... 21 Java Around! Java-based office suites, and marks another milestone OS/2 Warp is developing in the evolution of Java as a whole.” Productivity ................................. 21 into a strong and speedy Programmer’s Editors .......... 23 foundation for Java. The OS/2 Warp 4.0 Java implementation was recently This perfect fit is nicely updated with a better Virtual Machine (VM) and a REXX Programming ................ 23 symbolized by “Carmen” speedy Just In Time (JIT) compiler. Also, even older OS/2 the two-sided coffee cup versions, including Warp 3.0, Warp Connect Utilities & Tools ........................ 24 by dutch ceramist Erik-Jan |and Warp Server are now fully able to suppport Java. Books ............................................. 28 Kwakkel on the cover page. But the great work does not end with that: you can Registration Service .............
    [Show full text]
  • This PDF Is Provided Solely As a Reader Service. It Is Not Intended for Reproduction Or Public Distribution
    Copyright (c) 2007, CMP Media LLC. Important note: This PDF is provided solely as a reader service. It is not intended for reproduction or public distribution. For more information on obtaining a Reprint, please contact a Reprint Services Rep at 516.562.7026 or visit www.cmpreprints.com/faxback.jhtml CODEF SCANNERS A LL S E { Sense of Security? } AS MORE CUSTOM-BUILT SOFTWARE MAKES ITS WAY INTO YOUR APP INFRASTRUCTURE, THE THREAT LANDSCAPE IS SHIFTING. CAN AN AUTOMATED CODE SCANNER SECURE YOUR BUSINESS, OR WILL IT SIMPLY LULL THE IT STAFF WHILE CRIMINALS by Justin Schuh Illustration by Ryan Etter PROWL? REMEMBER WHEN ATTACKERS WERE JUST OUT FOR FAME AND requirements. Purpose-built apps provide the frame- glory, and application security was someone else’s prob- work for a huge range of business processes, from lem? Big targets like Microsoft and Oracle drew the fire. dynamic Web sites, SOA (service-oriented architecture) All enterprise IT had to do was apply patches regularly and e-commerce to business process automation and and keep a properly configured firewall. administration. They also provide a target-rich environ- Those days are gone. Cracking corporate networks is ment for would be attackers. no longer a kid’s game, it’s a lucrative criminal growth In response to this escalating threat, major compliance industry. The attackers who stole 45.6 million credit- standards like HIPAA and PCI DSS (Payment Card Industry and debit-card numbers Data Security Standard) are incorporating—or at least STRATEGIC from TJX Companies were implying the necessity of—application security processes.
    [Show full text]
  • A Comparison of C++, C#, Java, and PHP in the Context of E-Learning
    A Comparison of C++, C#, Java, and PHP in the context of e-learning MIKAEL OLSSON KTH Information and Communication Technology Master of Science Thesis Stockholm, Sweden 2009 TRITA-ICT-EX-2009:8 A Comparison of C++, C#, Java, and PHP in the context of e‐learning Mikael Olsson April 30, 2009 Master’s Thesis in Computer Science Royal Institute of Technology Examiner: Prof. Gerald Q. Maguire Jr. ‐ i ‐ Abstract The first part of this master thesis presents an effective method for producing video tutorials. This method was used during this thesis project to create tutorials on the e- learning site PVT (http://www.programmingvideotutorials.com). Part one also discloses how the production method was developed and how tutorials produced using this method compare to professional video tutorials. Finally, it evaluates the result of this thesis work and the efficiency of the production method. The second part of this thesis compares the syntactical similarities and differences between four of the languages taught via video tutorials for PVT. These languages are: C++, C#, Java, and PHP. The purpose of this comparison is to provide a bridge for programmers knowing one of these languages to rapidly learn one or more of the other languages. The reason why this would be necessary is because there is no single language suited for every area of software development. Knowing a multitude of languages gives a programmer a wider range of job opportunities and more choices in how to solve their problems. Part two of the thesis also includes a comparison of Java and C# in the context of a video tutorial series that shows how to build a basic text editor.
    [Show full text]
  • Comparative Studies of 10 Programming Languages Within 10 Diverse Criteria
    Department of Computer Science and Software Engineering Comparative Studies of 10 Programming Languages within 10 Diverse Criteria Jiang Li Sleiman Rabah Concordia University Concordia University Montreal, Quebec, Concordia Montreal, Quebec, Concordia [email protected] [email protected] Mingzhi Liu Yuanwei Lai Concordia University Concordia University Montreal, Quebec, Concordia Montreal, Quebec, Concordia [email protected] [email protected] COMP 6411 - A Comparative studies of programming languages 1/139 Sleiman Rabah, Jiang Li, Mingzhi Liu, Yuanwei Lai This page was intentionally left blank COMP 6411 - A Comparative studies of programming languages 2/139 Sleiman Rabah, Jiang Li, Mingzhi Liu, Yuanwei Lai Abstract There are many programming languages in the world today.Each language has their advantage and disavantage. In this paper, we will discuss ten programming languages: C++, C#, Java, Groovy, JavaScript, PHP, Schalar, Scheme, Haskell and AspectJ. We summarize and compare these ten languages on ten different criterion. For example, Default more secure programming practices, Web applications development, OO-based abstraction and etc. At the end, we will give our conclusion that which languages are suitable and which are not for using in some cases. We will also provide evidence and our analysis on why some language are better than other or have advantages over the other on some criterion. 1 Introduction Since there are hundreds of programming languages existing nowadays, it is impossible and inefficient
    [Show full text]
  • Buyers Guide Product Listings
    BUYERS GUIDE PRODUCT LISTINGS Visual Studio Magazine Buyers’ Guide Product Listings The 2009 Visual Studio Magazine Buyers’ Guide listings comprise more than 700 individual products and services, ranging from developer tooling and UI components to Web hosting and instructor-led training. Included for each product is contact and pricing information. Keep in mind that many products come in multiple SKUs and with varied license options, so it’s always a good idea to contact vendors directly for specific pricing. The developer tools arena is a vast and growing space. As such, we’re always on the prowl for new tools and vendors. Know of a product our readers might want to learn more about? E-mail us at [email protected]. BUG & FEATURE TRACKING Gemini—CounterSoft Starts at $1189 • countersoft.com • +44 (0)1753 824000 Rational ClearQuest—IBM Rational Software $1,810 • ibm.com/rational • 888-426-3774 IssueNet Intercept—Elsinore Technologies Call for price • elsitech.com • 866-866-0034 FogBugz 7.0—Fog Creek Software $199 • fogcreek.com • 888-364-2849; 212-279-2076 SilkPerformer—Borland Call for price • borland.com • 800-632-2864; 512-340-2200 OnTime 2009 Professional—Axosoft Starts at $795 for five users • axosoft.com • 800-653-0024; SourceOffSite 4.2—SourceGear 480-362-1900 $239 • sourcegear.com • 217-356-0105 Alexsys Team 2.10—Alexsys Surround SCM 2009—Seapine Software Starts at $145 • alexcorp.com • 888-880-2539; 781-279-0170 Call for price • seapine.com • 888-683-6456; 513-754-1655 AppLife DNA—Kinetic Jump Software TeamInspector—Borland
    [Show full text]
  • Link IDE : a Real Time Collaborative Development Environment
    San Jose State University SJSU ScholarWorks Master's Projects Master's Theses and Graduate Research Spring 2012 Link IDE : A Real Time Collaborative Development Environment Kevin Grant San Jose State University Follow this and additional works at: https://scholarworks.sjsu.edu/etd_projects Part of the Computer Sciences Commons Recommended Citation Grant, Kevin, "Link IDE : A Real Time Collaborative Development Environment" (2012). Master's Projects. 227. DOI: https://doi.org/10.31979/etd.rqpj-pj3k https://scholarworks.sjsu.edu/etd_projects/227 This Master's Project is brought to you for free and open access by the Master's Theses and Graduate Research at SJSU ScholarWorks. It has been accepted for inclusion in Master's Projects by an authorized administrator of SJSU ScholarWorks. For more information, please contact [email protected]. Link IDE : A Real Time Collaborative Development Environment A Project Report Presented to The Faculty of the Department of Computer Science San José State University In Partial Fulfillment of the Requirements for the Degree Master of Science in Computer Science by Kevin Grant May 2012 1 © 2012 Kevin Grant ALL RIGHTS RESERVED 2 SAN JOSE STATE UNIVERSITY The Undersigned Project Committee Approves the Project Titled Link : A Real Time Collaborative Development Environment by Kevin Grant APPROVED FOR THE DEPARTMENT OF COMPUTER SCIENCE SAN JOSÉ STATE UNIVERSITY May 2012 ------------------------------------------------------------------------------------------------------------ Dr. Soon Tee Teoh, Department
    [Show full text]
  • Programming with Windows Forms
    A P P E N D I X A ■ ■ ■ Programming with Windows Forms Since the release of the .NET platform (circa 2001), the base class libraries have included a particular API named Windows Forms, represented primarily by the System.Windows.Forms.dll assembly. The Windows Forms toolkit provides the types necessary to build desktop graphical user interfaces (GUIs), create custom controls, manage resources (e.g., string tables and icons), and perform other desktop- centric programming tasks. In addition, a separate API named GDI+ (represented by the System.Drawing.dll assembly) provides additional types that allow programmers to generate 2D graphics, interact with networked printers, and manipulate image data. The Windows Forms (and GDI+) APIs remain alive and well within the .NET 4.0 platform, and they will exist within the base class library for quite some time (arguably forever). However, Microsoft has shipped a brand new GUI toolkit called Windows Presentation Foundation (WPF) since the release of .NET 3.0. As you saw in Chapters 27-31, WPF provides a massive amount of horsepower that you can use to build bleeding-edge user interfaces, and it has become the preferred desktop API for today’s .NET graphical user interfaces. The point of this appendix, however, is to provide a tour of the traditional Windows Forms API. One reason it is helpful to understand the original programming model: you can find many existing Windows Forms applications out there that will need to be maintained for some time to come. Also, many desktop GUIs simply might not require the horsepower offered by WPF.
    [Show full text]
  • 2008 BZ Research Eclipse Adoption Study
    5th Annual Eclipse Adoption Study November 2008 (With comparisons to November 2007, November 2006, November 2005 and September 2004 Studies) 7 High Street, Suite 407 Huntington, NY 11743 631-421-4158 www.bzresearch.com © BZ Research November 2008 Eclipse Adoption Study © BZ Research November 2008 Table of Contents Table of Contents................................................................................................................................................... 2 Methodology .......................................................................................................................................................... 4 Universe Selection ................................................................................................................................................. 6 Question 1. Do the developers within your organization use Eclipse or Eclipse-based tools? ........................ 7 Question 2. Which version(s) of Eclipse are you using? .................................................................................... 8 Question 3. How long have you been using Eclipse or Eclipse-based tools and technologies (either at work, or for your personal projects)?.............................................................................................................................. 9 Question 4. What type of software are you (or your organization) developing using Eclipse-based tools and technologies? (Note: OSI refers to Open Source Initiative, see www.opensource.org for more information.) ...............................................................................................................................................................................10
    [Show full text]
  • 8 C# Development Tools
    Object Oriented Programming using C# C# Development Tools 8 C# Development Tools Introduction This chapter will introduce the reader to several development tools that support the development of large scale C# systems. We will also consider the importance of documentation and show tools can be used to generate documentation for systems you create (almost automatically). Objectives By the end of this chapter you will be able to…. • Find details of several professional and free interactive development environments • Understand the importance of the software documentation tools and the value of embedding XML comments within your code. • Write XML comments and generate automatic documentation for your programs. This chapter consists of eight sections :- 1) Tools for Writing C# Programs…. 2) Microsoft Visual Studio 3) SharpDevelop 4) Automatic Documentation 5) Sandcastle Help File Builder 6) GhostDoc 7) Adding Namespace Comments 8) Summary 8.1 Tools for Writing C# Programs Whatever mode of execution is employed (see section 1.7), programmers can work with a variety of tools to create source code. It is possible to write C# programs using simple discrete tools such as a plain text editor (e.g. Notepad) and a separate compiler invoked manually as required. However virtually all programmers would use a powerful Integrated Development Environment (IDE) which use compilers and other standard tools behind a seamless interface. Even more sophisticated tools Computer Aided Software Engineering (CASE) tools exist which integrate the implementation process with other phases of the software development lifecycle. CASE tools could take UML class diagrams, generated as part of the software analysis and design phase, and generate classes and method stubs automatically saving some of the effort required to write the C# code (ie.
    [Show full text]
  • Introducción a Linux Equivalencias Windows En Linux Ivalencias
    No has iniciado sesión Discusión Contribuciones Crear una cuenta Acceder Página discusión Leer Editar Ver historial Buscar Introducción a Linux Equivalencias Windows en Linux Portada < Introducción a Linux Categorías de libros Equivalencias Windows en GNU/Linux es una lista de equivalencias, reemplazos y software Cam bios recientes Libro aleatorio análogo a Windows en GNU/Linux y viceversa. Ayuda Contenido [ocultar] Donaciones 1 Algunas diferencias entre los programas para Windows y GNU/Linux Comunidad 2 Redes y Conectividad Café 3 Trabajando con archivos Portal de la comunidad 4 Software de escritorio Subproyectos 5 Multimedia Recetario 5.1 Audio y reproductores de CD Wikichicos 5.2 Gráficos 5.3 Video y otros Imprimir/exportar 6 Ofimática/negocios Crear un libro 7 Juegos Descargar como PDF Versión para im primir 8 Programación y Desarrollo 9 Software para Servidores Herramientas 10 Científicos y Prog s Especiales 11 Otros Cambios relacionados 12 Enlaces externos Subir archivo 12.1 Notas Páginas especiales Enlace permanente Información de la Algunas diferencias entre los programas para Windows y y página Enlace corto GNU/Linux [ editar ] Citar esta página La mayoría de los programas de Windows son hechos con el principio de "Todo en uno" (cada Idiomas desarrollador agrega todo a su producto). De la misma forma, a este principio le llaman el Añadir enlaces "Estilo-Windows". Redes y Conectividad [ editar ] Descripción del programa, Windows GNU/Linux tareas ejecutadas Firefox (Iceweasel) Opera [NL] Internet Explorer Konqueror Netscape /
    [Show full text]
  • Creating Telephony Applications for Both Windows® and Linux
    Application Note Dialogic Research, Inc. Dual OS Applications Creating Telephony Applications for Both Windows® and Linux: Principles and Practice Application Note Creating Telephony Applications for Both Windows® and Linux: Principles and Practice Executive Summary To help architects and programmers who only have experience in a Windows® environment move their telephony applications to Linux, this application note provides information that aims to make the transition easier. At the same time, it takes into account that the original code for Windows may not be abandoned. The ultimate goal is to demonstrate how to create flexible OS-agnostic telephony applications that are easy to build, deploy, and maintain in either environment. Creating Telephony Applications for Both Windows® and Linux: Principles and Practice Application Note Table of Contents Introduction .......................................................................................................... 2 Moving to a Dual Operating System Environment ................................................. 2 CMAKE ......................................................................................................... 2 Boost Jam .................................................................................................... 2 Eclipse .......................................................................................................... 3 Visual SlickEdit ............................................................................................. 3 Using Open Source Portable
    [Show full text]
  • Martin Koníček Debugger Frontent for the Sharpdevelop
    Charles University in Prague Faculty of Mathematics and Physics MASTER THESIS Martin Koníček Debugger Frontent for the SharpDevelop IDE Department of Software Engineering Supervisor of the master thesis: Mgr. Pavel Ježek Study programme: Computer science Specialization: Software systems Prague 2011 I would like to thank my supervisor Pavel Ježek for his time and his very helpful, constructive advice on this thesis. I would like to extend a very honest “thank you” to David Srbecký, the author of the SharpDevelop Debugger and Daniel Grunwald, the lead developer of SharpDevelop IDE. They were both very helpful and the work on this thesis probably wouldn’t start without them. I would also like to thank Christoph Wille for running the project, Siegfried Pammer and Matt Ward for all their contributions and enthusiasm and of course Mike Krüger for originally starting the SharpDevelop project. They all deserve much respect for their work. Last but not least, I thank Google for supporting students to work on interesting open source projects. I declare that I carried out this master thesis independently, and only with the cited sources, literature and other professional sources. I understand that my work relates to the rights and obligations under the Act No. 121/2000 Coll., the Copyright Act, as amended, in particular the fact that the Charles University in Prague has the right to conclude a license agreement on the use of this work as a school work pursuant to Section 60 paragraph 1 of the Copyright Act. In Prague Martin Koníček Název práce: Debugger Frontent for the SharpDevelop IDE Autor: Martin Koníček Katedra / Ústav: Department of Software Engineering Vedoucí diplomové práce: Mgr.
    [Show full text]