Probleme avec yylineno [Yacc/Bison] - C - Programmation
Marsh Posté le 29-10-2005 à 21:03:04
j'ai matté tes liens : en flex/bison ne donne pas le code généré (y.tab.c) ça sert à rien, de toute façon tu ne peux pas le modifier, à chaque recompilation de ton yacc il serait écrasé.
Marsh Posté le 29-10-2005 à 21:47:42
Ah ok, j'y connais presque rien en yacc, le code c'est pas moi qui l'est fait, j'essai juste de le recompiler sur windows pour ensuite l'utiliser avec d'autre programmes.
D'ailleurs, ou je peux le mettre %option yylineno dans le .yacc? j'ai effectivement" extern int yylineno;" mais je ne sais pas pourquoi il est en extern, j'ai regardé mon fichier .lex et je n'ai aucune référence à yylineno. Au passage, en deux mots, ca sert à quoi yylineno?
Apparemment tu à l'air de t'y connaitre dans le domaine, jesus_christ. Peut etre pourras tu m'expliquer pourquoi j'ai ces warnings quand je compile mon fichier .yacc. LEs voici:
Code :
|
Je te renvoie au lien de mon premier message pour le code du .yacc. Je te pose cet question car initialement j'utilisais mingw avec gcc 3.42 et les warnings cidessus étaient remplacés par des errors, par chance avec la versions 2.95 j'ai réussi à obtenir mon .o, mais j'ai toujours des problemes. Pour eviter ces erreurs/warnings, j'ai tant bien que mal essayer de "caster" les $1, $2.... de cre_correspondance( $1, $2, $3 , $4, $5, $6, $7 ), mais ca ne changea rien. La je ne vois pas pourquoi.
Thx, A+
Marsh Posté le 29-10-2005 à 22:11:26
désolé mais à cette heure ci j'ai pas la force de tout lire
le "%option yylineno" se met dans le lexeur. D'ailleurs tu ne donnes pas ton lexeur ici (le truc en lex/flex) à moins que tu ne l'ai fait à la main (fonction yylex).
Marsh Posté le 29-10-2005 à 23:27:03
Dans le lexeur je n'ai pas de yylineno. Voici le code:
Code :
|
Je suppose que le %option yylineno dont tu me parles, je le mets dans la partie déclaration.
Vi mon message etait un peu long, , mais essai de jeter un oeil un peu plus tard, ca serait cool
++
Marsh Posté le 30-10-2005 à 11:04:16
Code :
|
je vais regarder le reste après
Marsh Posté le 30-10-2005 à 11:47:40
j'ai reconstruit ton projet, les lex et le yacc sont bons mais il me manque les entêtes :
#include "structure_correspondance.h"
#include "structure_format_thomson.h"
#include "leste.h"
Marsh Posté le 30-10-2005 à 13:49:38
tu as bien fait car ça m'a l'air de ne pas être open-source (propriété de thomson)
Marsh Posté le 30-10-2005 à 14:05:22
chez moi ça compile après une correction : il manque une paranthèse ligne 94 environ du yacc :
Code :
|
Marsh Posté le 30-10-2005 à 15:14:25
Ah j'ai du la virer sans faire attention car j'ai essayé de mettre des casts devant car j'avais des warnings.
Oui, c'est un truc propriétaire, mais si ca ne traine pas sur un forum ca ira
Ba tien je vais te donner le code de mon programme qui ne voulait pas compiler avec le y.tab.o (en privé)
Marsh Posté le 29-10-2005 à 13:45:49
J'ai un programme C appelé y.tab.c créé à partir de Bison. Je l'ai compilé avec gcc 2.95, j'ai eu plusieurs warning mais j'ai réussi à obtenir mon .o
Mon probleme vient apres lorsque je souhaite linker y.tab.o avec d'autres programmes. PAr exemple pour ceci:
Je comprends pas d'ou vient mon probleme, sachant que j'ai bien yylineno de définit dans mon programme y.tab.c.
J'ai mis l'ensemble du code de mon fichier y.tab.c ici http://ubuntu.pastebin.com/409861
et l'ensemble de mon fichier yacc ici: http://ubuntu.pastebin.com/409865
Quelqu'un sait d'ou pourrait venir le probleme?
++
Message édité par cervantes le 29-10-2005 à 13:48:42