<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">%% -*- mode: latex; TeX-master: "compilerbau.tex"; -*-

\begin{slide}{Eindeutigkeit}

\kopf{$ $Id: eindeut.tex,v 1.2 2006-10-23 22:28:20 waldmann Exp $ $}

Def: $G$ heißt \emph{eindeutig}, falls $\forall w \in L(G)$
\emph{genau ein} Ableitungsbaum $(T,m)$ existiert.

Bsp: ist $\{ S \to aSb | SS | \epsilon \}$ eindeutig?

(beachte: mehrere Ableitungen $S \to_R^* w$ sind erlaubt,
und wg. Kontextfreiheit auch gar nicht zu vermeiden.)

\bigskip

Die naheliegende Grammatik für arith. Ausdr.
\begin{verbatim}
expr -&gt; number | expr + expr | expr * expr
\end{verbatim}
ist mehrdeutig (aus \emph{zwei} Gründen!) 

Auswege:
\begin{itemize}\itemsep 1pt \parskip 1pt
\item Transformation zu eindeutiger Grammatik
  (benutzt zusätzliche Variablen)
\item
  Operator-Assoziativitäten und -Präzedenzen
\end{itemize}

\end{slide}


\begin{slide}{Assoziativität}

\[ (3+2)+4 \stackrel{?}{=} 3+2+4 \stackrel{?}{=} 3+(2+4) \]

\[ (3-2)-4 \stackrel{?}{=} 3-2-4 \stackrel{?}{=} 3-(2-4) \]

\[ (3**2)**4 \stackrel{?}{=} 3**2**4 \stackrel{?}{=} 3**(2**4) \]

\begin{itemize}
\item
  Grammatik-Regeln
\item
  Plus ist nicht assoziativ (für Gleitkommazahlen)
\item
  links oder rechts?
\end{itemize}

\end{slide}

\begin{slide}{Präzedenzen}

\[ (3+2)*4 \stackrel{?}{=} 3+2*4 \stackrel{?}{=} 3+(2*4) \]

\begin{itemize}
\item
  Grammatik-Regeln
\item
  Verhältnis von plus zu minus, mal zu durch?
\end{itemize}

\end{slide}
</pre></body></html>