diff --git a/info/exercises/ex-03-sol.pdf b/info/exercises/ex-03-sol.pdf index 17e187b47360c3eba545dfd53a01f0b3f7d80b90..d9bfc3def389fa5991449936602744798979eedd 100644 Binary files a/info/exercises/ex-03-sol.pdf and b/info/exercises/ex-03-sol.pdf differ diff --git a/info/exercises/ex-03.pdf b/info/exercises/ex-03.pdf index cdaf7ef242c891093edfca9551ae32b0b4cb7d62..5430286f7979c4b6fc1c1eac56f7ac4219eb8217 100644 Binary files a/info/exercises/ex-03.pdf and b/info/exercises/ex-03.pdf differ diff --git a/info/exercises/src/ex-03/ex/table.tex b/info/exercises/src/ex-03/ex/table.tex index aa1de12f5b9c57eddc61dabd02be26459569ead9..8f84e38f533e450accc409e77033dec2e84167ec 100644 --- a/info/exercises/src/ex-03/ex/table.tex +++ b/info/exercises/src/ex-03/ex/table.tex @@ -76,24 +76,8 @@ generally called \emph{left recursion elimination}. Transformed grammar steps (explanation below): - - Left recursion elimination (not LL(1) yet! \(\first(S') = \{(, [\;\}\)): - \begin{align*} - S &::= S' \mid ()S' \mid [\;]S' \\ - S' &::= (S)S' \mid [S]S' - \end{align*} - - Inline \(S'\) once in \(S ::= S'\): - \begin{align*} - S &::= (S)S' \mid [S]S' \mid ()S' \mid [\;]S' \\ - S' &::= (S)S' \mid [S]S' \mid \epsilon - \end{align*} - - Finally, left factorize \(S\) to get an LL(1) grammar: \begin{align*} - S &::= (T_1 \mid [T_2 \\ - T_1 &::= S)S' \mid ~)S' \\ - T_2 &::= S]S' \mid ~]S' \\ + S &::= ()S' \mid [\;]S' \\ S' &::= (S)S' \mid [S]S' \mid \epsilon \end{align*}