Bonjour à tous,
Bah voila, peut etre avez vous vu mes anciens sujets sur des problemes avec lex et yacc, et bien en voila un autre

Mon projet marche bien avec les entrées par defaut de yyFlexLexer, a savoir les entrees sorties sur l'ecran.
Maintenant si j'essaie de lui dire, prend comme entrée le fichier suivant (ce qui est le but final), là ca plante ... Error memory (acces violation je crois ) etc..

Voila en gros mon fichier yacc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
%{       
            //Pour enlever les warnings  du compilateur de visual C++ 6.0
            #pragma warning(disable:4786)
            #include <iostream>
            #include <vector>
            #include <fstream>
            #include <string>         
            #include <FlexLexer.h>
            // -- prototypes des fonctions obligatoires
            void yyerror(char *);
            int yylex();
            // -- variable globale qui est mon scanner
            yyFlexLexer* lexer;
%}
 
//La grammaire non montree ici
 
void yyerror(char *s)
{
    fprintf(stderr, "%s\n", s);
}
 
int yylex(void)
{
            return lexer->yylex() ;
}
 
int main(int argc, char** argv)
{
            std::ifstream yyin("in.txt");
            if(!yyin)
            {
                        std::cerr << "Impossible de lire le fichier source" << std::endl;
                        exit(1);
            }
            //Des cast qui sont normalement corrects
            lexer = new yyFlexLexer(reinterpret_cast<class istream *>(&std::cin), reinterpret_cast<class ostream *>(&std::cout));
 
            try
            {
                        yyparse();
            }
            catch ( ... ) // traite toutes les exceptions
            {
                        std::cerr << "Erreur inconnue. Ligne : " << lexer->lineno() << std::endl;
            }
            return 0;
}
J'utilise donc flex et bison sous windows et je travaille avec Visual C++ 6.0

Je ne comprend pas trop pourquoi cela ne marche pas. Et si l'erreur vient d'ailleurs , comment la voir ?

Merci d'avance
++