summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tp2.tex17
1 files changed, 10 insertions, 7 deletions
diff --git a/tp2.tex b/tp2.tex
index 31b0b12..bb30c10 100644
--- a/tp2.tex
+++ b/tp2.tex
@@ -144,13 +144,16 @@ Initialement, la grammaire de la calculatrice définie dans
\end{aligned}
\]
Il s'agit d'une grammaire « étendue » au sens où le membre de droite
-des règles de production autorise l'utilisation des métacaractères
-« ${*}$ », « ${+}$ » et « ${?}$ » des expressions rationnelles — pour
-désigner respectivement un nombre quelconque de répétitions, au moins
-une répétition, ou un groupe facultatif. En principe, on pourrait
-éliminer l'utilisation de ces métacaractères en s'inspirant de la
-manière dont on démontre que tout langage rationnel est algébrique
-(par exemple $X\rightarrow Y{*}$ peut être remplacé par $X\rightarrow
+des règles de production autorise l'utilisation de métacaractères
+« ${|}$ » (disjonction), « ${*}$ » (étoile de Kleene), « ${+}$ » et
+« ${?}$ » de manière semblable aux expressions rationnelles :
+c'est-à-dire que JavaCC note $X|Y$ pour un choix entre $X$ et $Y$,
+ainsi que $X{*}$ pour un nombre quelconque de répétitions de $X$ et
+$X{+}$ pour la variante imposant au moins une répétition et $X{?}$
+pour un $X$ factultatif. En principe, on pourrait éliminer
+l'utilisation de ces métacaractères en s'inspirant de la manière dont
+on démontre que tout langage rationnel est algébrique (par exemple
+$X\rightarrow Y{*}$ peut être remplacé par $X\rightarrow
\varepsilon\,|\,YX$), mais l'analyseur LL de JavaCC ne sera pas
forcément capable de gérer la grammaire ainsi transformée, donc il est
préférable d'utiliser les métacaractères lorsque c'est possible.