diff --git a/src/chapters/02/chapter02.tex b/src/chapters/02/chapter02.tex index 93b4f630..7cb9b388 100644 --- a/src/chapters/02/chapter02.tex +++ b/src/chapters/02/chapter02.tex @@ -248,7 +248,7 @@ \subsection{Ambiguità delle grammatiche}\label{sec:ambiguity} \subsubsection*{Dangling Else} Introduciamo una nuova forma di grammatica \begin{equation} - S \to \; if \; b \; then \; S |\; if\; B\; then\; S\; else\; S |\; other + S \to \; if \; b \; then \; S \mid if\; B\; then\; S\; else\; S \mid other \end{equation} La domanda che ci poniamo a questo punto è: si tratta di una grammatica ambigua? Prendiamo ad esempio questa parola: \begin{equation} @@ -256,27 +256,17 @@ \subsubsection*{Dangling Else} w =\; if\; b\; then\; if\; b\; then\; other\; else\; other \end{equation} Con quale \(then\) è accoppiato l’\(else\)? Non si può sapere! Di fatto possiamo ricostruire \(w\) con questi due diversi alberi: -% \begin{figure} -% \centering -% \includegraphics[width=.7\textwidth,keepaspectratio]{dangling_else_1.jpg} -% \caption{Primo albero di derivazione per Eq. \ref{dangling_else}} -% \label{fig:dangling_else_1} -% \end{figure} -% \begin{figure} -% \centering -% \includegraphics[width=.7\textwidth,keepaspectratio]{dangling_else_2.jpg} -% \caption{Secondo albero di derivazione per Eq. \ref{dangling_else}} -% \label{fig:dangling_else_2} -% \end{figure} \begin{figure}[H] \begin{minipage}{.5\textwidth} \centering - \subimport{assets/figures/}{dangling_else_1.tex} + \includegraphics[width=.9\textwidth,keepaspectratio]{dangling_else_1.jpg} + % \subimport{assets/figures/}{dangling_else_1.tex} \end{minipage} % \hfill \begin{minipage}{.5\textwidth} \centering - \subimport{assets/figures/}{dangling_else_2.tex} + \includegraphics[width=.9\textwidth,keepaspectratio]{dangling_else_2.jpg} + % \subimport{assets/figures/}{dangling_else_2.tex} \end{minipage} \caption{Due possibili alberi di derivazione per \(w\), entrambi corretti} \label{fig:dangling_else} diff --git a/src/chapters/09/chapter09.tex b/src/chapters/09/chapter09.tex index e634837e..903aa0d8 100644 --- a/src/chapters/09/chapter09.tex +++ b/src/chapters/09/chapter09.tex @@ -314,7 +314,7 @@ \subsubsection{Definizione stati e costruzione dell'automa} Lo stato 2 ha questo kernel: \begin{align*} S &\to L \cdot = R, \{\$\} \\ - S &\to L \cdot, \{\$\} + R &\to L \cdot, \{\$\} \end{align*} Questo stato è già chiuso, perché nel primo item il marker \(\cdot\) si trova davanti al terminale \(=\), mentre invece il secondo item ci propone la riduzione \([R \to L, \{\$\}]\); inoltre, il primo item ci propone la transizione \(\tau(2, =)\). Notiamo anche che in questo stato abbiamo sia uno shift che una riduzione, teniamolo a mente per dopo.