flex && unix && c++ - C++ - Programmation
Marsh Posté le 14-04-2006 à 14:58:01
uhm, je sais pas si c'est ça mais sous windows, le retour à la ligne, c'est \r\n Donc si tu parce ton fichier windows sous unix, ça peut être être la cause du problème
Essaye toujours avec ça, ça ne mange pas de pain
Code :
|
Marsh Posté le 14-04-2006 à 15:49:40
Bon pour les purist et pour des complement d'info:
le makefile sous UNIX
Code :
|
le fichier .h de la classe appelante
Code :
|
le fichier Cpp de la classe
Code :
|
le fichier .h regoupant toutes mes analyse futures
Code :
|
le fichier l generant un fichier C pour faire l'analyse lexical
Code :
|
Marsh Posté le 14-04-2006 à 15:52:27
Le changement des balise de retour chariot \n sous windows en \r\n sous unix ne cahnge rien.
en executant ce code on ne voit pas les sorties standards des printf des macros. en contre partie celles du void parsingMisc(void) sont bien visible
Marsh Posté le 14-04-2006 à 16:11:00
Qu'est-ce qui ne fonctionne pas exactement ?
t'as débuggé ton code ligne par ligne sous unix ?
Marsh Posté le 18-04-2006 à 11:44:07
oui lord de l'appel de la fonction ecrite en flex soit il ne reconais rien et sort le tout sur la sortie yyout ou il reconnais tous comme la derniere option soit "n'import quoi"
Marsh Posté le 18-04-2006 à 12:00:10
please help me
Marsh Posté le 24-04-2006 à 13:03:37
Probleme resolu:
L'importation de programme ecrite sous windows introduit des caractere de fin de ligne invisible sous nedit (LINUX et UNIX) seul Xemacs les affiche.
Donc il vous faut ecrire le programme sous unix directement.
1 semaine et demi pour ça ... BANG BANG
Marsh Posté le 14-04-2006 à 14:54:52
Bonjour,
J'ai un probleme d'execution d'un programme. Il est developpé en C++ avec l'appel a une fonction d'analyse lexical generer automaiquement sous flex. Son but: recuperer des information utile dans des fichiers .h et .c.
Je l'ai tester sous windows et il fonctionne correctement. Mais au passage sous unix il fonctionne sauf la fonction d'analyse lexical ne marche pas.
Precision: on passe bien dedans.
voici le fichier .l
Code:
%{
#include "PARSER.h"
%}
%option noyywrap
%s macroVerHi macroVerLo macro256Proc macroProcessState macroVendor
/****************************useful expressions********************************/
versionHigh "#define HIGH_SW_VERSION"[ \t]*
versionLow "#define LOW_SW_VERSION"[ \t]*"0x"
more256Proc "RTK_MORE_THAN_256_PROCESSES_FTR"
processState "TRA_PROCESS_STATE_DBG"
vendorString "USB_TRACE_VENDOR_STR_FTR"
macro .+
retourchariot \n
%%
{versionHigh} {BEGIN(macroVerHi);}
{versionLow} {BEGIN(macroVerLo);}
{more256Proc} {BEGIN(macro256Proc);}
{processState} {BEGIN(macroProcessState);}
{vendorString} {BEGIN(macroVendor);}
<macroVerHi>{macro}/\n {fprintf(yyout, "%s", yytext);BEGIN(INITIAL);}
<macroVerLo>{macro}/\n {fprintf(yyout, "%s\n", yytext);BEGIN(INITIAL);}
<macro256Proc>{macro}/\n {fprintf(yyout, "More256Processes\n" );BEGIN(INITIAL);}
<macroProcessState>{macro}/\n {fprintf(yyout, "ProcessState\n" );BEGIN(INITIAL);}
<macroVendor>{macro}/\n {fprintf(yyout, "VendorString\n" );BEGIN(INITIAL);}
{retourchariot} {/* on fait rien */}
. {/* on fait rien */}
%%
void parsingMisc(void)
{
yylex();
}
voici le make file
Code:
parsingmisc.c: parsingmisc.l
flex -oparsingmisc.c -Pmiscfile parsingmisc.l
dos2unix lex.yy.c lex.yy.c
main.exe: main.o MISC.o PARSER.o parsingmisc.o
g++ -Wall -o main.exe main.o MISC.o PARSER.o parsingmisc.o
parsingmisc.o: parsingmisc.c parsingmisc.h
g++ -Wall -c parsingmisc.c -lfl
PARSER.o: PARSER.cpp PARSER.h
g++ -Wall -c PARSER.cpp
MISC.o: MISC.cpp MISC.h PARSER.h
g++ -Wall -c MISC.cpp
main.o: main.cpp MISC.h
g++ -Wall -c main.cpp
clean:
rm -f main.o MISC.o PARSER.o parsingmisc.o
cleanall: clean
rm -f main.exe
rm -f parsingmisc.c
all: parsingmisc.c main.exe