% !TeX spellcheck = de_DE \documentclass[11pt,a4paper,toc]{scrartcl} \usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry} \usepackage[ngerman]{babel} \usepackage{amssymb} \usepackage{scrextend} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{enumitem} \usepackage{mathtools} \usepackage[load=named]{siunitx} \usepackage{csquotes} \usepackage[hidelinks]{hyperref} %\usepackage{listings} \usepackage{algorithmicx} \usepackage{algpseudocode} %\usepackage{pgfplots} \usepackage{tikz} %\usetikzlibrary{positioning} %\usetikzlibrary{arrows.meta} %\usetikzlibrary{quotes} %\usetikzlibrary{angles} %\usetikzlibrary{babel} %\usetikzlibrary{fit} %\usepackage{datetime} %\usepackage{xcolor} %\pdfminorversion=7 % Import-Unterstützung für PDFs bis Version 1.7 %\pgfplotsset{compat=1.16} % verhindern, dass pgfplots im Rückwärtskompatibilitätsmodus arbeitet \setlist[enumerate,1]{label={\arabic*.}} \setlist[enumerate,2]{label={\alph*)}} \title{Grundlagen des Übersetzerbaus: Verfahren} \author{Marco Ammon (my04mivo)} \date{\today} \begin{document} \maketitle \tableofcontents \section{Transformationen} \subsection{Innere Klassen} \begin{description} \item[innere Klasse:] in \texttt{Outer} enthaltene, nicht statische Klasse \texttt{Inner} \end{description} \begin{enumerate} \item flache Hierarchie durch Verschieben der inneren Klasse außerhalb der umgebenden Klasse(n): \texttt{Outer.Inner} $\rightarrow$ \texttt{Outer\$Inner} \item Konstruktor der inneren Klasse um Parameter ggf. erzeugen und um Parameter \texttt{Outer this\$i} ergänzen (mit $i$ als Schachtelungstiefe von \texttt{Outer}), zusätzlich gleichnamige Instanzvariable einfügen \item Zugriffen auf Instanzvariablen von \texttt{Outer} ein \texttt{this\$i.} voranstellen \item Hilfsmethoden für Zugriff auf private Instanzvariablen von \texttt{Outer} in \texttt{Outer} einfügen (mit aktueller Java-Version durch spezielles Attribut in Klassendatei nicht mehr notwendig) \item Alle Auftreten von \texttt{Inner} durch \texttt{Outer\$Inner} ersetzen \item Bei von \texttt{Inner} erbenden Klassen \texttt{(new Outer()).super();} im Konstruktor ergänzen, damit \text{Outer}-Instanz erzeugt wird \item Bei in Blöcken deklarierten inneren Klassen wird der Zugriff auf finale (oder \enquote{effectively-final}) Variablen durch Ergänzen des Konstruktors um diese Variablen ermöglicht \end{enumerate} \subsection{Generics} \section{Geschachtelte Funktionen} \subsection{ohne Display} \subsection{mit Display} \section{Objekt-orientierte Sprachen} \subsection{Methodenauswahl} \subsection{Einfachvererbung} \subsubsection{Dynamischer Methodenaufruf} \subsubsection{Casts/Typprüfung zur Laufzeit} \subsection{Interfaces} \subsubsection{Dynamischer Methodenaufruf} \subsubsection{Casts/Typprüfung zur Laufzeit} \subsection{Mehrfachvererbung} \subsubsection{Dynamischer Methodenaufruf} \subsubsection{Casts/Typprüfung zur Laufzeit} \section{Code-Selektion} \subsection{Mit Registerzuteilung} \subsubsection{Naiver Code-Generator} \subsubsection{getreg} \subsubsection{Sethi-Ullman-Algorithmus} \subsection{Ohne Registerzuteilung} \subsubsection{Baumtransformationen} \subsubsection{Verfahren von Graham/Glanville} \subsubsection{Dynamische Programmierung} \section{Registerzuteilung} %\printbibliography \end{document}