summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2017-01-23 16:10:23 (GMT)
committerDavid A. Madore <david+git@madore.org>2017-01-23 16:10:23 (GMT)
commitd851d509e5c7c2f0dacccffa90d75d9a4ee17167 (patch)
tree6b68dcfd313a8351721edf8d74590dcb3ba534d0
parent5795955cc6e46ee50f8f3526be2a3b7657e161f0 (diff)
downloadinf105-d851d509e5c7c2f0dacccffa90d75d9a4ee17167.zip
inf105-d851d509e5c7c2f0dacccffa90d75d9a4ee17167.tar.gz
inf105-d851d509e5c7c2f0dacccffa90d75d9a4ee17167.tar.bz2
Update on the dangling else problem (short summary).
-rw-r--r--exercices2.tex11
1 files changed, 9 insertions, 2 deletions
diff --git a/exercices2.tex b/exercices2.tex
index 22c2eef..60b0c45 100644
--- a/exercices2.tex
+++ b/exercices2.tex
@@ -334,10 +334,17 @@ $\mathtt{else}$ devrait se rattacher à elle), et ce, récursivement.
On peut montrer que la grammaire ci-dessus est inambiguë et faiblement
équivalente à celle de départ.
-J'ignore s'il existe une grammaire inambiguë naturelle, faiblement
+On peut aussi fabriquer une grammaire inambiguë, faiblement
équivalente à celle de départ, qui force l'autre interprétation (le
$\mathtt{else}$ se rapporte au $\mathtt{if}$ le plus lointain
-possible).
+possible), mais c'est nettement plus complexe (l'idée générale pour
+apparier un $\mathtt{else}$ avec un $\mathtt{if}...\mathtt{else}$ dans
+cette logoque est de demander que \emph{soit} le $\mathtt{else}$ n'est
+suivi d'aucun autre $\mathtt{else}$, \emph{soit} toute instruction
+conditionnelle entre le $\mathtt{then}$ et le $\mathtt{else}$ est
+elle-même complète). Contrairement à la grammaire précédente, cette
+grammaire, bien qu'inambiguë, est probablement impossible à analyser
+avec un analyseur LR (ou même, déterministe).
\end{corrige}