📚 The CoCalc Library - books, templates and other resources
License: OTHER
%!TEX root = Programmierparadigmen.tex1\markboth{Ergänzende Definitionen}{Ergänzende Definitionen}2\chapter*{Ergänzende Definitionen}3\addcontentsline{toc}{chapter}{Ergänzende Definitionen}45\begin{definition}[Quantoren]\xindex{Quantor}%6\begin{defenum}7\item $\forall x \in X: p(x)$: Für alle Elemente $x$ aus der Menge $X$ gilt8die Aussage $p$.9\item $\exists x \in X: p(x)$: Es gibt mindestens ein Element $x$ aus der10Menge $X$, für das die Aussage $p$ gilt.11\item $\exists! x \in X: p(x)$: Es gibt genau ein Element $x$ in der12Menge $X$, sodass die Aussage $p$ gilt.13\end{defenum}14\end{definition}1516\begin{definition}[Prädikatenlogik]\xindex{Prädikatenlogik}%17Eine Prädikatenlogik ist ein formales System, das Variablen und Quantoren18nutzt um Aussagen zu formulieren.19\end{definition}2021\begin{definition}[Aussagenlogik]\xindex{Aussagenlogik}%22TODO23\end{definition}2425\begin{definition}[Grammatik]\xindex{Grammatik}\xindex{Alphabet}\xindex{Nichtterminal}\xindex{Startsymbol}\xindex{Produktionsregel}\index{Ableitungsregel|see{Produktionsregel}}%26Eine (formale) \textbf{Grammatik} ist ein Tupel $(\Sigma, V, P, S)$ wobei gilt:27\begin{defenumprops}28\item $\Sigma$ ist eine endliche Menge und heißt \textbf{Alphabet},29\item $V$ ist eine endliche Menge mit $V \cap \Sigma = \emptyset$ und30heißt \textbf{Menge der Nichtterminale},31\item $S \in V$ heißt das \textbf{Startsymbol}32\item $P = \Set{p: I \rightarrow r | I \in (V \cup \Sigma)^+, r \in (V \cup \Sigma)^*}$ ist eine endliche Menge aus \textbf{Produktionsregeln}33\end{defenumprops}34\end{definition}3536Man schreibt:3738\begin{itemize}39\item $a \Rightarrow b$: Die Anwendung einer Produktionsregel auf $a$ ergibt $b$.40\item $a \Rightarrow^* b$: Die Anwendung mehrerer (oder keiner) Produktionsregeln auf41$a$ ergibt $b$.42\item $a \Rightarrow^+ b$: Die Anwendung mindestens einer Produktionsregel auf $a$43ergibt $b$.44\end{itemize}4546\begin{beispiel}[Formale Grammatik]47Folgende Grammatik $G = (\Sigma, V, P, A)$ erzeugt alle korrekten Klammerausdrücke:4849\begin{itemize}50\item $\Sigma = \Set{(, )}$51\item $V = \Set{\alpha}$52\item $s = \alpha$53\item $P = \Set{\alpha \rightarrow () | \alpha \alpha | (\alpha)}$54\end{itemize}55\end{beispiel}5657\begin{definition}[Kontextfreie Grammatik]\xindex{Grammatik!Kontextfreie}%58Eine Grammatik $(\Sigma, V, P, S)$ heißt \textbf{kontextfrei}, wenn für59jede Produktion $p: I \rightarrow r$ gilt: $I \in V$.60\end{definition}6162\begin{definition}[Sprache]\xindex{Sprache}%63Sei $G = (\Sigma, V, P, S)$ eine Grammatik. Dann ist64\[L(G) := \Set{\omega \in \Sigma^* | S \Rightarrow^* \omega}\]65die Menge aller in der Grammatik ableitbaren Wörtern. $L(G)$ heißt Sprache66der Grammatik $G$.67\end{definition}6869\begin{definition}\xindex{Linksableitung}\xindex{Rechtsableitung}%70Sei $G = (\Sigma, V, P, S)$ eine Grammatik und $a \in (V \cup \Sigma)^+$.71\begin{defenum}72\item $\Rightarrow_L$ heißt \textbf{Linksableitung}, wenn die Produktion73auf das linkeste Nichtterminal angewendet wird.74\item $\Rightarrow_R$ heißt \textbf{Rechtsableitung}, wenn die Produktion75auf das rechteste Nichtterminal angewendet wird.76\end{defenum}77\end{definition}7879\begin{beispiel}[Links- und Rechtsableitung]80Sie $G$ wie zuvor die Grammatik der korrekten Klammerausdrücke:8182\begin{equation*}83\begin{aligned}[t]84\alpha &\Rightarrow_L \alpha \alpha\\85&\Rightarrow_L \alpha \alpha \alpha\\86&\Rightarrow_L () \alpha \alpha\\87&\Rightarrow_L () (\alpha) \alpha\\88&\Rightarrow_L () (()) \alpha\\89&\Rightarrow_L () (()) ()\\90\end{aligned}91\qquad\Longleftrightarrow\qquad92\begin{aligned}[t]93\alpha &\Rightarrow_R \alpha \alpha\\94&\Rightarrow_R \alpha \alpha \alpha\\95&\Rightarrow_R \alpha \alpha ()\\96&\Rightarrow_R \alpha (\alpha) ()\\97&\Rightarrow_R \alpha (()) ()\\98&\Rightarrow_R () (()) ()\\99\end{aligned}100\end{equation*}101\end{beispiel}102103\begin{definition}[LL($k$)-Grammatik]\xindex{LL(k)-Grammatik}%104Sei $G = (\Sigma, V, P, S)$ eine kontextfreie Grammatik. $G$ heißt105LL($k$)-Grammatik für $k \in \mathbb{N}_{\geq 1}$, wenn jeder Ableitungsschritt durch106die linkesten $k$ Symbole der Eingabe bestimmt ist.\todo{Was ist die Eingabe einer Grammatik?}107\end{definition}108109Ein LL-Parser ist ein Top-Down-Parser liest die Eingabe von Links nach rechts110und versucht eine Linksableitung der Eingabe zu berechnen. Ein LL($k$)-Parser111kann $k$ Token vorausschauen, wobei $k$ als \textit{Lookahead}\xindex{Lookahead}112bezeichnet wird.113114\begin{satz}115Für linksrekursive, kontextfreie Grammatiken $G$ gilt:116\[\forall k \in \mathbb{N}: G \notin \SLL(k)\]117\end{satz}118119