95 research outputs found
Übersetzerbau. Ein kleiner Überblick
Übersetzerbau-Forschung ist heutzutage hauptsächlich durch die
Entwicklung von Optimierungs- und Codeerzeugungs-Verfahren
geprägt. Dadurch sollen Übersetzer in die Lage versetzt werden,
die vielfältigen Eigenschaften moderner Prozessoren effizient zu
nutzen. Die Grundlagen moderner Übersetzer, insbesondere die
Überprüfung des Eingabeprogramms hinsichtlich syntaktischer und
semantischer Regeln sind wohlverstanden und beruhen auf
Erkenntnissen aus den 60er und 70er Jahren. Das Erzeugen von
lauffähigem Code ist ebenso gut erforscht. Diese Verfahren sind
auch über den Übersetzerbau hinaus grundlegend für die
Informatik.
In den folgenden Kapiteln geben wir eine kleine Einführung in
die Arbeitsweise von Übersetzern. Wir verzichten bewusst auf die
meisten (formalen) Details und Algorithmen, da wir Einsteigern
ermöglichen wollen, die verschiedenen Komponenten dieser
komplexen Systeme zu Überblicken und sich eine intuitive
Vorstellung von Übersetzern zu bilden.
Für das detaillierte Studium der vorgestellten Konzepte,
Verfahren und Algorithmen werden wir jeweils Literatur benennen.
Die im Anhang besprochenen Standardwerke sind von allgemeinem
Interesse.
Zwar ist die detaillierte Beschreibung der einzelnen Verfahren
unerlässlich für ihr genaues Verständnis, wir sind jedoch der
Meinung, dass eine ungefähre Vorstellung von dem, was ein
Verfahren bewirkt, das tiefere Verständnis erleichtert. Es
besteht dennoch die Gefahr, dass eine fehlgeleitete Intuition
dem tieferen Verstehen im Wege steht. Falls dies durch diesen
Text geschehen sein sollte, bitten wir um die Nachsicht des
Lesers. Wir sind für Kritik und Verbesserungsvorschläge äußerst
dankbar, da uns an einer ständigen Verbesserung dieses Textes
gelegen ist
Die C# Schnittstelle der Referenzattributgrammatik-gesteuerten Graphersetzungsbibliothek RACR: Übersicht, Anwendung und Implementierung: Entwicklerhandbuch
Dieser Bericht präsentiert RACR-NET, eine Schnittstelle der Referenzattributgrammatik-gesteuerten Graphersetzungsbibliothek RACR für C#.
RACR-NET ermöglicht die Nutzung der deklarativen, dynamischen Sprachspezifikations-, Instanziierungs- und Auswertungsmeachanismen der RACR Scheme-Bibliothek in der objektorientierten Programmierung. Dies umfasst insbesondere die automatische inkrementelle Auswertung attributbasierter semantischer Analysen und somit das automatische Cachen parametrisierter Funktionsmethoden. Graphersetzungen entsprechen hierbei Zustandsänderungen von Objektinstanzen und der Invalidierung abgeleiteter Berechnungen.
Schwerpunkt dieses Berichts ist die objektorientierte Programmierschnittstelle von RACR-NET, dessen praktische Anwendung und Implementierung. Der Bericht ist ein Referenzhandbuch für RACR-NET Anwender und Entwickler.:1. Einleitung
1.1. Aufgabenstellung
1.2. Struktur der Arbeit
2. Konzeptionelle und technische Voraussetzungen
2.1. Überblick der RAG-gesteuerten Graphersetzung
2.2. Scheme
2.3. Die RACR Scheme-Bibliothek
2.4. Das .NET-Framework und die Common Language Infrastructure
2.5. IronScheme
3. RACR-NET Implementierung: Prozedurale Schnittstelle
3.1. Scheme in C#
3.2. RACR in C#
3.3. Anforderungsanalyse
3.4. Implementierung der prozeduralen Schnittstelle
4. RACR-NET Implementierung: Objektorientierte Schnittstelle
4.1. Überblick über die objektorientierte Schnittstelle
4.2. Anwendungsbeispiel
4.3. Herausforderungen bei der Implementierung
4.4. Implementierung
5. Evaluation
5.1. Testen der Schnittstelle
5.2. Performance-Messungen und -Vergleiche
6. Zusammenfassung und Ausblick
6.1. Eine objektorientierte Bibliothek für RAG-gesteuerte Graphersetzung
6.2. Zukünftige Arbeiten
A. Literaturverzeichnis
B. MIT Lizen
An abstract machine for an object-oriented language with top-level classes
Object-oriented programming languages where classes are top-level, i.e. not first-class citizens, are better suited for compilation than completely dynamic languages like SMALLTALK or SELF. In O\u27SMALL, a language with top-level classes, the compiler can statically determine the inheritance hierarchy. Due to late binding, the class of the receiver of a message must be determined at run time. After that a direct jump to the corresponding method is possible. Method lookup can thus be done in constant time. We present an abstract machine for O\u27SMALL based on these principles. It is a concise description of a portable O\u27SMALL implementation
Entwicklung eines Source-to-Source Compilers für explizite Optimierung
Die Laufzeitoptimierung von Programmen involviert oft repetitive Transformationen des Source Codes, welche aufwendig sind und den Code schwerer verständlich machen. In dieser Arbeit wird ein Source to Source Compiler präsentiert, mit welchem derartige Transformationen automatisiert werden können. Dieser Compiler wurde für eine Teilmenge von OpenCL-C und C entwickelt und nutzt Pragmas, um anzugeben, wann welche Transformationen angewendet werden sollen. Die Transformationen können zudem noch parametrisiert sein. Durch selektives Anwenden der Transformationen und Durchprobieren mehrerer Parameterkombinationen können damit leicht viele unterschiedliche Versionen des Codes erstellt werden, die für Autotuning genutzt werden könnten. Bei Autotuning wird die Laufzeit der unterschiedlichen Versionen geschätzt und es kann die beste für die aktuelle Hardware ausgewählt werden
- …