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 :

[Flex/Bison] Erreur syntaxique récurrente et inexpliquée


Sujet :

Générateurs de compilateur

  1. #1
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut [Flex/Bison] Erreur syntaxique récurrente et inexpliquée
    Bonjour,

    Je travaille sur une partie de projet en Flex et Bison et j'ai un erreur syntaxique que je ne comprend pas !

    OS : Ubuntu 6.06
    Commandes de compilation (voir Makefile plus bas) :
    Commande d'éxécution :
    Affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GET
    get OK
    /!\ syntax error /!\
    Voici mon fichier Flex (Essai01.lex) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %{
            #include "Essai01.h"
    %}
    GET             ("G"|"g")("E"|"")("T"|"t")
    POST            ("P"|"p")("O"|"")("S"|"s")("T"|"t")
    HEAD            ("H"|"h")("E"|"e")("A"|"a")("D"|"d")
    %%
    {GET}           {return(GET);}
    {POST}          {return(POST);}
    {HEAD}          {return(HEAD);}
    %%
    Mon fichier Bison correspondant (Essai01.y) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    %{
            #include <stdio.h>
    %}
    %token GET POST HEAD
    %start entete
    %%
    entete : GET {printf("get OK\n");};
    entete : POST {printf("post OK\n");};
    entete : HEAD {printf("head OK\n");};
    %%
    int yyerror(char * message)
    {
            printf("/!\\ %s /!\\\n",message);
            return 0;
    }
     
    int main()
    {
            yyparse();
            return 0;
    }
    Et mon Makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    all :
            bison -d -o Essai01.c Essai01.y
            flex Essai01.lex
            gcc -c Essai01.c
            gcc -c lex.yy.c
            gcc -o Essai01 lex.yy.o Essai01.o -ll
    clean :
            rm Essai01.c
            rm lex.yy.c
            rm Essai01.o
            rm lex.yy.o
            rm Essai01.h
            rm Essai01
    Quelqu'un aurait-il une explication ?

    Merci

  2. #2
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bon j'ai résolu mon problème toute seule.

    En fait, ma ligne %token contenait d'autres token et cette ligne doit être limitée à 128 caractères. Après maints essais, j'ai donc méga simplifié mon fichier... Et voilà !!

    BiM

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Points : 41
    Points
    41
    Par défaut
    Je n'ai rien compris !!
    Ta ligne %token ne contient pas bcp de caractères .
    Comment tu as réglé le prob?

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Salut, et bien ceci n'était qu'un exemple. Sur mon vrai fichier, la ligne contenait une bonne vingtaine de tokens

    Tout simplement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de segmentation (Flex/Bison)
    Par lucastof dans le forum Générateurs de compilateur
    Réponses: 0
    Dernier message: 20/12/2011, 02h30
  2. [Flex/Bison] Erreur 11 : initializer element is not constant
    Par henri93 dans le forum Générateurs de compilateur
    Réponses: 1
    Dernier message: 12/11/2010, 16h23
  3. [C] FLEX/BISON Erreur segmentation
    Par romainromain dans le forum Générateurs de compilateur
    Réponses: 0
    Dernier message: 28/11/2007, 16h36
  4. [Flex/Bison] Erreur segmentation
    Par romainromain dans le forum Générateurs de compilateur
    Réponses: 0
    Dernier message: 28/11/2007, 16h23
  5. Afficher le détail des erreurs syntaxiques
    Par Laurent Birckel dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 22/03/2005, 17h44

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