summaryrefslogtreecommitdiffstats
path: root/tp2.tex
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2017-01-24 20:40:05 +0100
committerDavid A. Madore <david+git@madore.org>2017-01-24 20:40:05 +0100
commitc1cb53ae11a9cc5fe42c8271a3a2fe806877dc0c (patch)
tree4820d45c49357a1d75960ee5aaadf6fd77c2115c /tp2.tex
parentc0144ee707a03caffae6963c429f17078c6dc89e (diff)
downloadinf105-c1cb53ae11a9cc5fe42c8271a3a2fe806877dc0c.tar.gz
inf105-c1cb53ae11a9cc5fe42c8271a3a2fe806877dc0c.tar.bz2
inf105-c1cb53ae11a9cc5fe42c8271a3a2fe806877dc0c.zip
Try to further clarify the use of metacharacters in the "extended" grammar.
Diffstat (limited to 'tp2.tex')
-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.