From c1cb53ae11a9cc5fe42c8271a3a2fe806877dc0c Mon Sep 17 00:00:00 2001 From: "David A. Madore" Date: Tue, 24 Jan 2017 20:40:05 +0100 Subject: Try to further clarify the use of metacharacters in the "extended" grammar. --- tp2.tex | 17 ++++++++++------- 1 file 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. -- cgit v1.2.3