IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Générateurs de compilateur Discussion :

Lex flex pointer pointeur


Sujet :

Générateurs de compilateur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Débutant
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut Lex flex pointer pointeur
    J'essaie de compiler en faisant :

    mv mainEs.c mainEs.l ; gcc list.c ;lex mainEs.l ; gcc lex.yy.c -o mainEs -lfl

    mais j'ai :

    Compilation started at Fri May 30 11:55:23

    gcc list.c ;lex mainEs.l ; gcc lex.yy.c -o mainEs -lfl
    In file included from list.c:6:
    list.h:49: error: expected ‘)’ before ‘ptr’
    list.h:51: error: expected ‘)’ before ‘ptr’
    list.h:53: error: expected ‘;’, ‘,’ or ‘)’ before ‘adres’
    list.c: In function ‘liste’:
    list.c:40: error: ‘listLabels_p’ undeclared (first use in this function)
    list.c:40: error: (Each undeclared identifier is reported only once
    list.c:40: error: for each function it appears in.)
    list.c:40: error: expected ‘;’ before ‘p’
    list.c:41: error: ‘tete’ undeclared (first use in this function)
    list.c:42: error: ‘p’ undeclared (first use in this function)
    list.c: At top level:
    list.c:67: error: expected ‘)’ before ‘ptr’
    list.c:76: error: expected ‘)’ before ‘ptr’
    list.c:93: error: expected ‘;’, ‘,’ or ‘)’ before ‘adres’
    In file included from mainEs.l:5:
    list.h:49: error: expected ‘)’ before ‘ptr’
    list.h:51: error: expected ‘)’ before ‘ptr’
    list.h:53: error: expected ‘;’, ‘,’ or ‘)’ before ‘adres’
    mainEs.l: In function ‘yylex’:
    mainEs.l:38: error: ‘listLabels_p’ undeclared (first use in this function)
    mainEs.l:38: error: (Each undeclared identifier is reported only once
    mainEs.l:38: error: for each function it appears in.)
    mainEs.l:38: error: expected ‘;’ before ‘ptrLablCour’
    mainEs.l:39: error: expected ‘;’ before ‘label1’
    mainEs.l:41: error: ‘ptrLablCour’ undeclared (first use in this function)
    mainEs.l:43: error: ‘listLabels_t’ undeclared (first use in this function)
    mainEs.l:43: error: expected expression before ‘)’ token
    mainEs.l:54: error: ‘label1’ undeclared (first use in this function)
    mainEs.l:54: error: invalid application of ‘sizeof’ to incomplete type ‘struct listLabels’
    mainEs.l: In function ‘main’:
    mainEs.l:100: error: ‘listLabels_t’ undeclared (first use in this function)
    mainEs.l:100: error: ‘label1’ undeclared (first use in this function)
    mainEs.l:156: error: ‘listLabels’ undeclared (first use in this function)
    mainEs.l:156: error: expected ‘;’ before ‘label1’
    mainEs.l:157: error: ‘uneListLabels’ undeclared (first use in this function)

    Compilation exited abnormally with code 1 at Fri May 30 11:55:24
    je ne comprends pas déjà rien que le 1er message:
    list.h:49: error: expected ‘)’ before ‘ptr’ ?




    PS: ce serait bien qu'ils acceptent les fichiers en .l .y
    Fichiers attachés Fichiers attachés
    • Type de fichier : h list.h (801 octets, 85 affichages)
    • Type de fichier : c list.c (1,3 Ko, 87 affichages)
    • Type de fichier : c mainEs.c (3,3 Ko, 82 affichages)

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    list.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct  listEtats
    {
        struct listEtats * prec;
        //char * nom[30];
        char *  val;
        struct listEtats * suiv; 
        // listLabels_t, *listLabels_p;  ????
    };
    ....
    int  lnghListChainLabels( listLabels_p ptr);
    void enumListLabel(  listLabels_p ptr);
    void ajoutBriqToListLabels(const  listLabels_p adres,const char* chnNom);
    ....
    listLabels_p n'est pas un type de données connu. Il faut le déclarer avant de pouvoir l'utiliser.

  3. #3
    Membre confirmé
    Homme Profil pro
    Débutant
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    ça c'est si tu regardes listEtats dans list.h, mais pourquoi il ne regarde pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef struct  listLabels
    {
        struct listLabels * prec;
        //char * nom[30];
        char *  val;
        struct listLabels * suiv; 
        // listLabels_t, *listLabels_p;
    } listLabels_t, *listLabels_p;      <-
    à la fin de mainEs.l pour voir la correspondance ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Débutant
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    Bon, j'ai réduit le nombre d'erreurs en mettant la définition typedef struct listLabels qui était dans mainEs.l en le mettant dans list.h car j'en ai besoin pour la reconnaissance des types pour les fonctions de list.c .
    Il reste alors les erreurs:
    Compilation started at Fri May 30 14:12:58

    gcc list.c ;lex mainEs.l ; gcc lex.yy.c -o mainEs -lfl
    /usr/lib/gcc/i586-suse-linux/4.2.1/../../../crt1.o: In function `_start':
    (.text+0x18): undefined reference to `main'
    collect2: ld returned 1 exit status
    mainEs.l: In function ‘main’:
    mainEs.l:157: error: ‘listLabels’ undeclared (first use in this function)
    mainEs.l:157: error: (Each undeclared identifier is reported only once
    mainEs.l:157: error: for each function it appears in.)
    mainEs.l:157: error: expected ‘;’ before ‘label1’
    mainEs.l:159: warning: assignment from incompatible pointer type
    Pourquoi il ne reconnait pas listLabels puisqu'il est défini dans list.h ?
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Homme Profil pro
    Débutant
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Débutant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    "mainEs.l:159: warning: assignment from incompatible pointer type"
    Un pointeur n'est pas une adresse=entier ?

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Pourquoi il ne reconnait pas listLabels puisqu'il est défini dans list.h ?
    C'est struct listLabels qui est défini
    Un pointeur n'est pas une adresse=entier ?
    Un pointeur est une adresse. Une adresse n'est pas un entier, son arithmétique est différente.

Discussions similaires

  1. Réponses: 12
    Dernier message: 06/12/2009, 10h11
  2. pb avec lex (flex)
    Par wasdaka dans le forum Linux
    Réponses: 0
    Dernier message: 06/12/2008, 11h06
  3. aide lex et yacc/flex et bison
    Par wasdaka dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 02/12/2008, 20h24
  4. Utiliser char * en entrée de lex/flex
    Par trax44 dans le forum Bibliothèque standard
    Réponses: 0
    Dernier message: 10/04/2008, 23h59
  5. [LG]Liste de pointeurs de type pointer
    Par tom_snop dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2005, 23h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo