bonjour,
dans le fichier de description flex : fichier.l
%{
#include <stdlib.h>
#include "fichier.tab.h"
#include "fichier.h"
liste table_symboles = NULL;
/* la fonction pointeur_entite qui étant donnée une entité reconnue, la recherche dans la table des symboles, elle retourne son adresse si elle existe, sinon elle l’insert et retourne son adresse */
liste pointeur_entite(char *entite) {
liste p;
/* recherche dans la table des symboles */
p = table_symboles;
while (p) {
if ( strcmp( p->entite, entite ) == 0 )
return p;
p = p->svt;
}
/* creation d'un noeud */
p = (liste) malloc(sizeof(noeud));
strncpy(p->entite, entite, 32);
p->entite[31] = '\0'; /* si strlen(entite) > 31 */
p->type = TYPE_INDEFINI;
/* insertion du noeud en tête de liste (LIFO) */
p->svt = table_symboles;
table_symboles = p;
return p;
}
%}
|