Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132930 views
License: OTHER
1
%!TEX root = Programmierparadigmen.tex
2
\markboth{Ergänzende Definitionen}{Ergänzende Definitionen}
3
\chapter*{Ergänzende Definitionen}
4
\addcontentsline{toc}{chapter}{Ergänzende Definitionen}
5
6
\begin{definition}[Quantoren]\xindex{Quantor}%
7
\begin{defenum}
8
\item $\forall x \in X: p(x)$: Für alle Elemente $x$ aus der Menge $X$ gilt
9
die Aussage $p$.
10
\item $\exists x \in X: p(x)$: Es gibt mindestens ein Element $x$ aus der
11
Menge $X$, für das die Aussage $p$ gilt.
12
\item $\exists! x \in X: p(x)$: Es gibt genau ein Element $x$ in der
13
Menge $X$, sodass die Aussage $p$ gilt.
14
\end{defenum}
15
\end{definition}
16
17
\begin{definition}[Prädikatenlogik]\xindex{Prädikatenlogik}%
18
Eine Prädikatenlogik ist ein formales System, das Variablen und Quantoren
19
nutzt um Aussagen zu formulieren.
20
\end{definition}
21
22
\begin{definition}[Aussagenlogik]\xindex{Aussagenlogik}%
23
TODO
24
\end{definition}
25
26
\begin{definition}[Grammatik]\xindex{Grammatik}\xindex{Alphabet}\xindex{Nichtterminal}\xindex{Startsymbol}\xindex{Produktionsregel}\index{Ableitungsregel|see{Produktionsregel}}%
27
Eine (formale) \textbf{Grammatik} ist ein Tupel $(\Sigma, V, P, S)$ wobei gilt:
28
\begin{defenumprops}
29
\item $\Sigma$ ist eine endliche Menge und heißt \textbf{Alphabet},
30
\item $V$ ist eine endliche Menge mit $V \cap \Sigma = \emptyset$ und
31
heißt \textbf{Menge der Nichtterminale},
32
\item $S \in V$ heißt das \textbf{Startsymbol}
33
\item $P = \Set{p: I \rightarrow r | I \in (V \cup \Sigma)^+, r \in (V \cup \Sigma)^*}$ ist eine endliche Menge aus \textbf{Produktionsregeln}
34
\end{defenumprops}
35
\end{definition}
36
37
Man schreibt:
38
39
\begin{itemize}
40
\item $a \Rightarrow b$: Die Anwendung einer Produktionsregel auf $a$ ergibt $b$.
41
\item $a \Rightarrow^* b$: Die Anwendung mehrerer (oder keiner) Produktionsregeln auf
42
$a$ ergibt $b$.
43
\item $a \Rightarrow^+ b$: Die Anwendung mindestens einer Produktionsregel auf $a$
44
ergibt $b$.
45
\end{itemize}
46
47
\begin{beispiel}[Formale Grammatik]
48
Folgende Grammatik $G = (\Sigma, V, P, A)$ erzeugt alle korrekten Klammerausdrücke:
49
50
\begin{itemize}
51
\item $\Sigma = \Set{(, )}$
52
\item $V = \Set{\alpha}$
53
\item $s = \alpha$
54
\item $P = \Set{\alpha \rightarrow () | \alpha \alpha | (\alpha)}$
55
\end{itemize}
56
\end{beispiel}
57
58
\begin{definition}[Kontextfreie Grammatik]\xindex{Grammatik!Kontextfreie}%
59
Eine Grammatik $(\Sigma, V, P, S)$ heißt \textbf{kontextfrei}, wenn für
60
jede Produktion $p: I \rightarrow r$ gilt: $I \in V$.
61
\end{definition}
62
63
\begin{definition}[Sprache]\xindex{Sprache}%
64
Sei $G = (\Sigma, V, P, S)$ eine Grammatik. Dann ist
65
\[L(G) := \Set{\omega \in \Sigma^* | S \Rightarrow^* \omega}\]
66
die Menge aller in der Grammatik ableitbaren Wörtern. $L(G)$ heißt Sprache
67
der Grammatik $G$.
68
\end{definition}
69
70
\begin{definition}\xindex{Linksableitung}\xindex{Rechtsableitung}%
71
Sei $G = (\Sigma, V, P, S)$ eine Grammatik und $a \in (V \cup \Sigma)^+$.
72
\begin{defenum}
73
\item $\Rightarrow_L$ heißt \textbf{Linksableitung}, wenn die Produktion
74
auf das linkeste Nichtterminal angewendet wird.
75
\item $\Rightarrow_R$ heißt \textbf{Rechtsableitung}, wenn die Produktion
76
auf das rechteste Nichtterminal angewendet wird.
77
\end{defenum}
78
\end{definition}
79
80
\begin{beispiel}[Links- und Rechtsableitung]
81
Sie $G$ wie zuvor die Grammatik der korrekten Klammerausdrücke:
82
83
\begin{equation*}
84
\begin{aligned}[t]
85
\alpha &\Rightarrow_L \alpha \alpha\\
86
&\Rightarrow_L \alpha \alpha \alpha\\
87
&\Rightarrow_L () \alpha \alpha\\
88
&\Rightarrow_L () (\alpha) \alpha\\
89
&\Rightarrow_L () (()) \alpha\\
90
&\Rightarrow_L () (()) ()\\
91
\end{aligned}
92
\qquad\Longleftrightarrow\qquad
93
\begin{aligned}[t]
94
\alpha &\Rightarrow_R \alpha \alpha\\
95
&\Rightarrow_R \alpha \alpha \alpha\\
96
&\Rightarrow_R \alpha \alpha ()\\
97
&\Rightarrow_R \alpha (\alpha) ()\\
98
&\Rightarrow_R \alpha (()) ()\\
99
&\Rightarrow_R () (()) ()\\
100
\end{aligned}
101
\end{equation*}
102
\end{beispiel}
103
104
\begin{definition}[LL($k$)-Grammatik]\xindex{LL(k)-Grammatik}%
105
Sei $G = (\Sigma, V, P, S)$ eine kontextfreie Grammatik. $G$ heißt
106
LL($k$)-Grammatik für $k \in \mathbb{N}_{\geq 1}$, wenn jeder Ableitungsschritt durch
107
die linkesten $k$ Symbole der Eingabe bestimmt ist.\todo{Was ist die Eingabe einer Grammatik?}
108
\end{definition}
109
110
Ein LL-Parser ist ein Top-Down-Parser liest die Eingabe von Links nach rechts
111
und versucht eine Linksableitung der Eingabe zu berechnen. Ein LL($k$)-Parser
112
kann $k$ Token vorausschauen, wobei $k$ als \textit{Lookahead}\xindex{Lookahead}
113
bezeichnet wird.
114
115
\begin{satz}
116
Für linksrekursive, kontextfreie Grammatiken $G$ gilt:
117
\[\forall k \in \mathbb{N}: G \notin \SLL(k)\]
118
\end{satz}
119