#include #include #include #include "lexc.h" static char bufinfo[PATH_MAX]; static bool is_lock; static int nberr=0; /* Oublie information sur prochaine erreur */ void lexcerr_unlock (void) { is_lock = false; } /* Enregistre la ligne et fichier courant pour prochaine erreur */ void lexcerr_lockinfo (void) { snprintf (bufinfo,sizeof(bufinfo)-1,"[%s:%d] ",filesrc_curfile(),filesrc_curline()); is_lock = true; } /* Impression de message d'erreur lexicale */ void lexcerr_bprintf (const char *ctl, ...) { if (!is_lock) lexcerr_lockinfo(); fprintf (stderr,"%s",bufinfo); is_lock = false; { va_list list; va_start (list,ctl); vfprintf (stderr,ctl,list); va_end (list); } nberr++; } /* Remet le compteur d'erreur à 0. */ export void lexcerr_reset (void) { nberr = 0; } /* Retourne le nombre d'erreur détectées par le préprocesseur. */ export int lexcerr_getnb(void) { return nberr; }