Structure incomplete [Lex Yacc] - C - Programmation
Marsh Posté le 13-12-2008 à 19:53:38
info_var tel que tu l'as défini n'est pas une structure mais un élément de ton union !
un truc du genre
Code :
|
ça doit déjà mieux passer
Marsh Posté le 13-12-2008 à 20:14:51
sligor a écrit : info_var tel que tu l'as défini n'est pas une structure mais un élément de ton union !
|
J'obtiens les erreurs :
Code :
|
J'ai même essayé avec des typedef en dehors de mon union. Ca marche pas mieux.
Marsh Posté le 13-12-2008 à 20:22:47
tu peux afficher ton code exemple3.y depuis le début jusqu'au lignes impliquées ?
Marsh Posté le 13-12-2008 à 21:06:32
AigleRoyal a écrit : |
Essaye en mettant tes déclarations du début entre %{ et %}.
Code :
|
Marsh Posté le 13-12-2008 à 21:33:52
sligor a écrit : tu peux afficher ton code exemple3.y depuis le début jusqu'au lignes impliquées ? |
Voilà mon code :
Code :
|
Marsh Posté le 13-12-2008 à 21:42:08
ce n'est pas ce que j'ai écrit
revois tes cours de C sur les structures :
Code :
|
ou
Code :
|
mais pas
Code :
|
qui declare juste une variable avec une structure anonyme.
Marsh Posté le 13-12-2008 à 21:57:10
sligor a écrit : ce n'est pas ce que j'ai écrit
|
Je ne pensais pas que ça changeais quelque chose.
Quoiqu'il en soit, j'ai toujours les mêmes erreurs avec le code suivant :
Code :
|
Marsh Posté le 13-12-2008 à 22:08:42
à la ligne 21 c'est s_info_var pas info_var
peut être que ça fait bugger tout le reste
Marsh Posté le 13-12-2008 à 22:20:53
sligor a écrit : à la ligne 21 c'est s_info_var pas info_var |
J'aurais aimé que ce soit ça. J'ai corrigé et rien n'y fait :
Code :
|
Marsh Posté le 13-12-2008 à 23:56:21
Tu pourrais donner les commandes yacc/bison/lex/flex que tu utilises pour la génération? Pour le lexer, il faut inclure le y.tab.h si tu utilises yylval.
Marsh Posté le 14-12-2008 à 01:06:53
Gf4x3443 a écrit : Tu pourrais donner les commandes yacc/bison/lex/flex que tu utilises pour la génération? Pour le lexer, il faut inclure le y.tab.h si tu utilises yylval. |
Voilà les commandes :
Code :
|
Marsh Posté le 14-12-2008 à 02:08:54
J'insiste.
Le header qui définit ces structures est-il correctement inclus dans le fichier pour lex et celui pour yacc? y.tab.h n'est pas censé les contenir, les directives d'inclusion de yacc concernent uniquement y.tab.c. Le fichier y.tab.h n'est la que pour le cas éventuel ou tu veux exporter la lval.
C'est assez peu orthodoxe cette manière de faire, les bonnes pratiques veulent que l'on mettent les structures externes dans un header à part.
Marsh Posté le 14-12-2008 à 09:48:46
Gf4x3443 a écrit : J'insiste. |
En fait, le fichier de base nous a été fourni par le prof (c'est prk il s'appelle encore "exemple3" ). Je ne maitrise pas toutes les subtilités des inclusions avec y.tab.h ou y.tab.c. J'avais un fichier de base que je devais compléter au fur et à mesure. Donc, de ce coté là, je ne saurais rien expliquer.
Y a-t-il une incidence sur les déclarations de mes structures ?
AR
Marsh Posté le 14-12-2008 à 15:00:58
Les déclarations de structures, mets les à part dans un autre header (comme je l'ai déjà dit), et inclus ce header dans le fichier lex ET le fichier yacc.
Edit: si tu veux voir les incidences, prends toi par la main, et va regarder les fichiers sources C générés: ils sont censés être standalones.
Edit2: ceci bien évidemment, suivant ce que utilises dans ton lex, mais vu que tu ne donnes pas l'intégralité de ces fichiers, tout ce qu'on peut faire sligor et moi, c'est faire de la résolution "Madame Soleil".
Marsh Posté le 14-12-2008 à 17:35:24
Ok, je regarde ça et je vous tiens au courant.
Gf4x3443 a écrit : Les déclarations de structures, mets les à part dans un autre header (comme je l'ai déjà dit), et inclus ce header dans le fichier lex ET le fichier yacc. |
J'avais posté mon fichier point h, plus haut.
Gf4x3443 a écrit : |
"Madame Soleil" késako ?
AR
Marsh Posté le 14-12-2008 à 17:53:12
AigleRoyal a écrit :
|
T'as posté celui généré par yacc via -d. Or je parle bien d'un header indépendant de lex et yacc, celui qui devrait contenir (normalement, quand on suit quelques best practices de compilo) tes définitions publiques (protégées avec les macros qui vont bien, évidemment).
AigleRoyal a écrit :
|
Que tu ne donnes qu'une partie de tes fichiers, et qu'on est obligé de sortir à chaque fois la boule de cristal pour essayer de comprendre.
C'est beaucoup plus facile quand on a l'intégralité du code et qu'on le fait de notre coté, on isole bien plus vite les problèmes en 10 min plutot que de taper 15 commentaires pour énumérer tous les cas problèmatiques possibles.
Marsh Posté le 13-12-2008 à 18:40:04
Bonjour à tous,
J'essaie en projet de coder un mini compilateur Pascal en Lex et Yacc.
Dans mon fichier yacc, j'ai ça :
Mais, le compilateur me renvoie l'erreur suivante :
Et pourtant, dans le point h, je vois ceci :
Je ne vois pas d'où provient l'erreur. Des idées ?
Merci d'avance,
AR
Message édité par AigleRoyal le 13-12-2008 à 18:41:58