Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

questrion lex/yacc

4 réponses
Avatar
Denis Leger
Bonjour,

je n'ai pas trouv=E9 de forum plus adapt=E9 =E0 ma question, merci de m'en
indiquer un s'il existe...

Je ne comprend pas bien comment fonctionne yacc, voici un exemple
tr=E8s minimal de ce qui me tracasse (contenu du fichier test.y) :


%token TEXTE AUTRE

%%

chaine: chaine texte { }
| chaine autre { }=20
| texte { }=20
| autre { } ;

autre: autre AUTRE { }=20
| AUTRE { } ;


texte: texte TEXTE { }=20
| TEXTE { };

%%


La grammaire est minimale, mais je veux simplement comprendre o=F9 est le
probl=E8me : yacc m'indique 4 conflits d=E9calage/r=E9duction, quelqu'un
peut-il m'expliquer pourquoi, et que faire pour l'=E9viter ?

Un grand merci d'avance pour toute aide.

--=20
Denis L=E9ger

4 réponses

Avatar
Eric Levenez
Le 24/05/07 13:25, dans ,
« Denis Leger » a écrit :

je n'ai pas trouvé de forum plus adapté à ma question, merci de m'en
indiquer un s'il existe...


Ce n'est pas du tout le bon NG, mais je comme il n'y a pas foule ici...

Je ne comprend pas bien comment fonctionne yacc, voici un exemple
très minimal de ce qui me tracasse (contenu du fichier test.y) :


%token TEXTE AUTRE

%%

chaine: chaine texte { }
| chaine autre { }


Les 2 lignes suivantes ne servent à rien je pense.

| texte { }
| autre { } ;

autre: autre AUTRE { }
| AUTRE { } ;


Pour "autre" et "texte", c'est en gros 2 fois la même chose vu que ce sont
des élements de chaine, alors il ne sert à rien de dire qu'il y a quelque
chose avant "AUTRE" ou avant "TEXTE" (c'est déjà dans la règle "chaine").

texte: texte TEXTE { }
| TEXTE { };

%%


La grammaire est minimale, mais je veux simplement comprendre où est le
problème : yacc m'indique 4 conflits décalage/réduction, quelqu'un
peut-il m'expliquer pourquoi, et que faire pour l'éviter ?


Je ferais un truc du genre :

%token TEXTE AUTRE

%%

chaine
: chaine element { }
| element { }
;

element
: AUTRE { }
| TEXTE { }
;

%%

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
Denis Leger
Le Thu, 24 May 2007 18:54:04 +0200

Le 24/05/07 13:25, dans
, « Denis Leger »
a écrit :

je n'ai pas trouvé de forum plus adapté à ma question, merci de
m'en indiquer un s'il existe...


Ce n'est pas du tout le bon NG, mais je comme il n'y a pas foule
ici...


Mais quel serait le NG le plus adapté ?


Je ne comprend pas bien comment fonctionne yacc, voici un exemple
très minimal de ce qui me tracasse (contenu du fichier test.y) :



[...]

Je ferais un truc du genre :

%token TEXTE AUTRE

%%

chaine
: chaine element { }
| element { }
;

element
: AUTRE { }
| TEXTE { }
;

%%


Merci de ton aide, je vais regarder ce que je peux faire avec ça.

Amicalement,

--
Denis Léger


Avatar
Jean-Marc Bourguet
"Antoine Leca" writes:

Note que si ta question était plus pointue, il faudrait aller chercher les
groupes dédiés aux langages (groupe(s) que je ne connais pas en français ;
en anglais c'est probablement comp.compilers s'il fonctionne encore.)


Il fonctionne toujours.

A+
--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Denis Leger
Le Fri, 25 May 2007 10:22:34 +0200

En news:,
Denis Leger va escriure:

je n'ai pas trouvé de forum plus adapté à ma question, merci de
m'en indiquer un s'il existe...


Ce n'est pas du tout le bon NG, mais je comme il n'y a pas foule
ici...


Mais quel serait le NG le plus adapté ?


Ici :-) (ou fr.comp.os.unix).
Éric dit que ce sujet n'est pas dans la charte du groupe (ce qui est
exact). Tu demandes à quel endroit poster pour obtenir les meilleures
indications sans générer trop de bruit : c'est ici !

Note que si ta question était plus pointue, il faudrait aller
chercher les groupes dédiés aux langages (groupe(s) que je ne connais
pas en français ; en anglais c'est probablement comp.compilers s'il
fonctionne encore.) D'autre part, s'il y avait plus de traffic ici
comme ce fut le cas par le passé, ou comme c'est encore le cas pour
comp.lang.c, ce ne serait pas adapté, car cela provoquerait des
réponses inutiles du genre « rappel à la norme » ; cf. la deuxi ème
partie de la phrase d'Éric.


Mais je cherchais un forum en français...

Quoi qu'il en soit, la réponse qui m'a été donnée m'a permis de
comprendre où était mon problème et je suis sur la bonne voie pour le
résoudre, donc merci beaucoup à Eric Levenez.. ;-)


--
Denis Léger