UE1-Verfahren/verfahren.tex

112 lines
3.4 KiB
TeX
Raw Normal View History

2020-06-25 12:28:58 +02:00
% !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
2020-06-25 12:52:53 +02:00
\setlist[enumerate,1]{label={\arabic*.}}
\setlist[enumerate,2]{label={\alph*)}}
2020-06-25 12:28:58 +02:00
\title{Grundlagen des Übersetzerbaus: Verfahren}
\author{Marco Ammon (my04mivo)}
\date{\today}
\begin{document}
\maketitle
\tableofcontents
\section{Transformationen}
\subsection{Innere Klassen}
2020-06-25 12:52:53 +02:00
\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}
2020-06-25 12:28:58 +02:00
\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}
2020-06-25 12:28:58 +02:00
\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}