/* Output du nouveau source */ #include #include #include #include #include #include "lexc.h" #include "lexc.m" static FILE *fout=NULL; static int lastline; static int lastcol; /* position de la derniere ecriture */ /* Ouvre un fichier pour la réécriture des tokens */ export void outsrc_open (char *nomout) { if (nomout == NULL){ fout = NULL; }else{ fout = fopen (nomout,"w"); if (fout==NULL){ fprintf (stderr,MSG_B(E_OPENOUT ,"Ne peut ouvrir fichier de sortie %s\n" ,"Can't open output file %s\n"),nomout); fout = stdout; } } lastline = 0; lastcol = 0; } /* Ferme le fichier de réécriture de source C */ export void outsrc_close (void) { if (fout != NULL && fout != stdout){ fclose (fout); fout = NULL; } } static int tab_val=8; /* Enregistre la dimension d'un tab pour regénération d'un source Par défaut, utilise 8. */ export void outsrc_settab (int tab) { tab_val = tab; } static void prtout (int noline, int nocar, char *texte) { int i; if (fout == NULL) return; if (lastline < noline){ fprintf (fout,"\n"); lastcol = 0; } if (nocar < lastcol){ fprintf (fout,"\n"); lastcol = 0; } if (lastcolcomment; if (comment != NULL){ prtout (comment->noline, comment->nocar, comment->texte); } prtout (tok->noline,tok->nocar,token_txt(tok)); } }