(Courriels de diversion: <meconnaîtras@guider-muterais.com> <diminuaient@percutants-sevrions.com> <interpellerait@transnationales-avorteras.com> <artistiques@deplafonnais-check-up.com> <ardentes@moyenâgeuse-amadoueras.com> <tampon@lisser-culturelles.com> <miserais@ronfleuses-conduirais.com> <arriere-grand-pere@innovent-rustiques.com> <precedaient@sonorisiez-boudes.com> <exhausserais@distincts-attrouper.com> )


Le 12 Avr, mathieu.ros@free.fr écrit :
> Ma question concerne yacc : 
> En gros, je suis en train de porter un porter un programme C qui a été écrit à 
> l'inra en 93 pour UNIX et je voudrais le faire compiler avec Watcom sous 
> windows. Déjà c'est pas de la tarte mais j'ai trouvé cette ligne dans un 
> fichier en-tête qui me laisse pantois:
> #line 1 "/usr/lib/yaccpar"
> et de plus le fichier commence par :
> # line 20 "analSynt.yacc"
> Je ne comprends pas trop ce que ça veut dire (je ne connaissais pas yacc en me 
> levant, sinon de nom) d'autant qu'il n'y a pas trace des '%' que l'on rencontre 
> normalement dans les fichiers yacc (d'après ce que j'ai compris).
> Si quelqu'un pouvait m'indiquer quelque documentation ou me donner des conseils 
> (hors liste), ce serait parfait.

  Je crois qu'on peut causer de ça sur la liste (pas des aspects
purement Microsoft Windows, bien sûr).

  Yacc est un générateur d'analyseur syntaxique. Ça prend en entrée une
grammaire décrivant un langage non contextuel, et ça te sort un fichier
C contenant une fonction qui reconnaît cette grammaire.

  Les équivalents libres sont Berkeley Yacc (byacc, BSD) et bison
(GNU). Il y a bien sûr d'autres programmes libres assurant la même
fonction, mais ils sont moins connus (et moins compatibles avec les
sources yacc).

  Pour générer son fichier C, yacc utilise un patron qui se trouve
(dans ton cas) dans le fichier /usr/lib/yaccpar. Yacc y ajoute les
tables servant à piloter l'analyseur et les actions définies dans la
grammaire (qui se trouve dans le fichier analSynt.yacc dans ton cas).

  Tu peux regénérer ton fichier C à partir de analSynt.yacc en
utilisant bison pour Microsoft Windows, s'il a été porté (pas vérifié,
regarde du côté de cygwin <URL:http://www.cygnus.com/> si c'est le cas).

  Comme l'explique Thierry, les #line servent à synchroniser le
compilateur sur les fichiers sources réels (yaccpar et analSynt.yacc)
plutôt que sur le fichier C généré. Cela sert pour les messages
d'erreur du compilateur et pour le dévermineur.

-- 
Marc Thirion              | Toulouse, France
Un Travail pour Chacun    : http://www.multimania.com/untravailchacun/
Marc.Thirion@ISOscope.com : http://www.ISOscope.com/Pérennité des logiciels et des systèmes



---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://savage.iut-blagnac.fr/>