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;
} |
Partager