1 |
Implementation funktionaler Programmiersprachen durch QuelltexttransformationMacos, Dragan 03 July 1998 (has links)
Die Dissertation liefert einen Beitrag zur Entwicklung von Compilern funktionaler Sprachen zur Erzeugung von Zielcode in einer höheren prozeduralen Programmiersprache. In der Dissertation werden mehrere Implementationstechniken funktionaler Sprachen analysiert, wobei für jede Technik ein Verfahren zur Realisierung eines auf der Übersetzung in eine prozedurale Sprache basierenden Compilers angegeben wird. Durch die verschiedenen Implementationsverfahren, die in der Arbeit analysiert bzw. definiert wurden, sind die beiden großen Klassen funktionaler Sprachen abgedeckt worden: strikte und nicht-strikte funktionale Programmiersprachen. Die Dissertation kann in drei größere Teile gegliedert werden, die sich mit folgenden Bereichen beschäftigen: Direkte übersetzungen funktionaler in prozedurale Programmiersprachen Übersetzung des Codes der abstrakten SECD-Maschine in eine prozedurale Sprache Erzeugung des Zielcodes in einer prozeduralen Programmiersprache bei Graph-Reduktion-basierten Implementationstechniken. Im ersten Teil, dem Schwerpunkt der Arbeit, wird eine über existierende Ansätze hinausgehende Transformation einer einfachen strikten funktionalen Programmiersprache (erweiterter Lambda-Kalkül) in den Code einer prozeduralen Zielsprache eingeführt und durch ein formales System von Transformationsregeln beschrieben. Die Transformation zeichnet sich durch Transparenz und Einfachheit (Erzeugung minimalen Codes) aus. Im zweiten und dritten Teil werden die aus der Literatur bekannten Implementationstechniken modifiziert bzw. optimiert, um Zielprogramme in einer höheren prozeduralen Programmiersprache erzeugen zu können. / This work contributes methods for the design and implementation of translation schemes for functional programming languages with procedural programming languages as a target. The dissertation analyzes different implementation techniques of functional languages. For each technique an approach is defined for the implementation of a compiler that translates the functional source language into a procedural target language. The analyzed techniques cover both classes of functional languages, strict and non-strict ones. The work is structured into three parts with the following topics: direct translation of functional programming languages into procedural programming languages; translation of the code of the SECD-abstract machine into a procedural language; emission of a target code in a procedural language by graph-reduction-based implementation techniques. In the first part, we give a formal definition for translating a simple functional language (syntacticly sugared lambda calculus) into the code of a procedural programming language. The defined transformation is simple and transparent. In the second and the third part, existing translation schemes are modified, i. e. two known implementation techniques are optimized to emit target code in an procedural language.
|
2 |
Simulationssprachen - Effiziente Entwicklung und AusführungBlunk, Andreas 21 January 2019 (has links)
Simulationssprachen sind in Bezug auf die Unterstützung neuer domänenspezifischer Konzepte mit einer dem Problem entsprechenden prägnanten Darstellung nicht flexibel erweiterbar. Dies betrifft sowohl die Sprache in ihren Konzepten als auch die Unterstützung der Sprache durch Sprachwerkzeuge. In dieser Arbeit entsteht der neue Sprachentwicklungsansatz Discrete-Event Modelling with Extensibility (DMX) für die Entwicklung flexibel erweiterbarer Simulationssprachen für domänenspezifische Anwendungsfelder, der eine effiziente Entwicklung der Sprache und eine effiziente Ausführung von Modellen erlaubt. Der Fokus der Arbeit liegt auf der zeitdiskreten ereignisbasierten Simulation und einer prozessorientierten Beschreibung von Simulationsmodellen. Der Ansatz unterscheidet Basiskonzepte, die zur Basissprache gehören, und Erweiterungskonzepte, die Teil von Erweiterungsdefinitionen sind. Es wird untersucht, welche Basiskonzepte eine Simulationssprache bereitstellen muss, so dass eine laufzeiteffiziente Ausführung von prozessorientierten Modellen möglich ist. Die hohe Laufzeiteffizienz der Ausführung wird durch die Konzeption einer neuartigen Methode zur Abbildung von Prozesskontextwechseln auf ein C++-Programm gezeigt. Der Spracherweiterungsansatz ist nicht auf Simulationssprachen als Basissprachen beschränkt und wird daher allgemein beschrieben. Der Ansatz basiert auf einer Syntaxerweiterung einer Basissprache, die mit einem Metamodell und einer kontextfreien Grammatik definiert ist. Die Ausführung von Erweiterungskonzepten wird durch eine Konzeptreduktion auf Basiskonzepte erreicht. Der Ansatz stellt bestimmte Voraussetzungen an eine Basissprache und erlaubt bestimmte Arten von Erweiterungen, die in der Arbeit untersucht werden. Die Eignung des Anstatzes zur Entwicklung einer komplexen domänenspezifischen Simulationssprache wird an einer Sprache für Zustandsautomaten gezeigt. / Simulation languages are not extensible regarding the support of new domain-specific concepts with a concise representation. This includes the concepts of a language as well as the language tools. In this dissertation, the new approach Discrete-Event Modelling with Extensibility (DMX) is developed. DMX allows to create flexible domain-specific simulation languages by defining extensions to a base language. The approach allows to develop these languages efficiently and also to execute simulation models in a runtime efficient way. The focus of this dissertation is on process-oriented descriptions of discrete-event simulation models. The approach distinguishes base concepts which are part of the base language and extension concepts which are part of extension definitions. The dissertation investigates the necessary base concepts which should be included in a base simulation language in order to execute process-oriented models efficiently. The high runtime efficiency of executions is achieved by creating a new method for mapping process context switches to a program in C++. The runtime efficiency can be transferred to extension concepts as well. The extension approach is described in a general way because it is not limited to a simulation language as a base language. The approach is based on the syntax extension of a base language, which is defined by a metamodel and a context-free grammar. The execution of extension concepts is achieved by concept reduction to base concepts. The approach has a number of requirements to the base language and allows certain kinds of extensions, which are desribed in the dissertation. The possibility to define a complex domain-specific simulation language is shown by applying the approach to the development of a state machine language.
|
Page generated in 0.0424 seconds