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

Linux Discussion :

Projet avec Flex et Bison


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Points : 15
    Points
    15
    Par défaut Projet avec Flex et Bison
    Bonjour,
    j'ai donc un projet utilisant Flex et Bison à rendre pour le jeudi 22/07/09.
    J'ai fichier texte formaté d'une certaine manière contenant des disques et des livres. Je dois faire l'analyse avec Lex et Yacc de ce fichier et ensuite recracher tout ça dans des pages html.
    Autant vous le dire tout de suite je ne suis pas une bête en programmation (surtout en C).
    Actuellement j'ai fait un lex qui ne fonctionne pas terrible, il me met des erreurs sur les espaces. J'ai aussi un Yacc qui ne me sort rien mais il est là.
    Déjà je vais essayer de résoudre ces problèmes. Par contre c'est pour après. Comment faire pour balancer mes chaines de caractères dans un fichier HTML ?
    Est-il obligatoire de construire un arbre à partir de l'analyse syntaxique et ensuite de parcourir cet arbre et envoyer tout ça trié dans des fichiers HTML ?
    J'ai pu voir sur les différents forum que tout ce qui concernait Yacc et Lex était souvent sans réponses (les boules)! Les différents exemples que j'ai pu voir sur internet concernent en grand partie une reconnaissance de chiffre et d'opérateurs basiques. Pour moi c'est la totale.
    Merci pour votre aide

  2. #2
    LLB
    LLB est déconnecté
    Membre expérimenté
    Inscrit en
    Mars 2002
    Messages
    967
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 967
    Points : 1 410
    Points
    1 410
    Par défaut
    Citation Envoyé par olivier1212 Voir le message
    Est-il obligatoire de construire un arbre à partir de l'analyse syntaxique et ensuite de parcourir cet arbre et envoyer tout ça trié dans des fichiers HTML ?
    Dans les règles de ton fichier Yacc, tu devras probablement stocker les informations (sous forme d'arbre, de tableau, de liste... à voir). Ensuite, tu pourras écrire ton code de traitement en dehors (tri, calculs...) et enfin écrire dans le fichier.

    Je pense que le plus important est de bien réfléchir à la structure de données (il faut voir et qui est le plus simple pour le parser et pour la suite).

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 147
    Points : 165
    Points
    165
    Par défaut
    Salut,

    Lex et Yacc c'est puissant mais ça demande un peu de pratique, enfin moi en tout cas ça m'en a demandé. Si tu veux un coup de main, tu peux nous poster un exemple de fichier à parser, et ce que tu as déjà codé, ainsi que ce qui ne marche pas.

    Comme l'a dit LLB, la structure de données est importante, elle te permettra d'avoir un parser plus facile à gérer, et un traitement des données plus simple par la suite.
    Avec les ordinateurs, 99% des bugs proviennent de l'interface chaise-clavier...

    Comment ça 1Km n'est pas égal à 1024m ???

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Points : 15
    Points
    15
    Par défaut Compilation
    Merci pour vos conseils.
    Pour l'instant je suis au boulot je vous posterai mon travail ce soir.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Points : 15
    Points
    15
    Par défaut compilo
    Bonsoir,
    voilà le type de texte à parser :
    {
    LIVRE
    \Titre= Les gens
    \Auteurs= Philippe Labro & moi aussi
    \Année= 2008 %%ceci est un commentaire
    \Photo = http://ecx.images-amazon.com/im_images.jpg
    \Resume = Maria, 16 ans, jeune américaine...
    \Notes = si jeune?
    }
    Les champs titre et auteurs sont obligatoires mais je ne les gère pas
    Vous pourrez trouver ce que j'ai fait ici :
    http://www.neufgiga.com/n/50-17/shar...4a60ae4d4d093/
    Les sources se trouvent dans Projet_Pico.zip
    merci d'avance pour vos conseils sur Flex et Bison.
    Je vais regarder si je peux utiliser des listes doublement chainées pour stocker mes chaines de caractères et surtout débugger mon Lex.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Points : 15
    Points
    15
    Par défaut Compilation
    Bon ben mon Lex à l'air de tourner, apparemment tout est reconnu :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    %{
    #include <string.h>
    #include "picoyacc.h"
    int ousuisje=1;
    %}
     
    separe [\n]      
    blanc [ \t]+
    entier [0-9]
    caractere[a-zA-Z@/: _.,\'éèàùç;!?ù^ê()]
     
    %%
    {blanc};
    =			printf("egal\n");		return EGAL;
    \{			printf("{\n");			return DEBUBLOC;
    \}			printf("}\n");			return FINBLOC;
    \&			printf("ET ");			return ESPER;
    -			printf("TIRET ");		return TIRET;
    ^LIVRE{separe}*		printf("LIVRE \n");		{ ousuisje++; return LIVRE; }
    ^DISQUE{separe}*	printf("DISQUE \n");		{ ousuisje++; return DISQUE; }
    "%%".*$			printf("commentaires \n");	{ return COMMENTAIRE; }
    \\Auteurs		printf("Auteurs ");		{ return AUTEUR; }
    \\Titre			printf("Titre ");		{ return TITRE; }
    \\Interprètes		printf("Interpretes ");		{ return INTERPRETE; }
    \\Année			printf("Année ");		{ return ANNEE; }
    \\Photo			printf("Photos ");		{ return PHOTO; }
    \\Résumé		printf("Résumé ");		{ return RESUME; }
    \\Plage			printf("Plage ");		{ return PLAGE; }
    \\Durée			printf("Durée ");		{ return DUREE; }
    \\Notes			printf("Notes ");		{ return NOTES;}
    {separe};
    {caractere}+		{ strcpy (yylval.chaine, yytext); return MOT; }
    {entier}+		{ yylval.entier = atoi(yytext); return ENTIER;}		
    <<EOF>>			printf("Fin de fichier\n");	{ return 0 ; }
    .			{ printf("Erreur ligne %d : symbole inconnu : '%s'\n", ousuisje, yytext); }
     
    %%
    Maintenant c'est mon yacc qui me renvoie une erreur de segmentation et je ne sais que faire...Peut-etre est-ce mes champs nom terminaux ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 36
    Points : 15
    Points
    15
    Par défaut compilation
    Bon ben finalement je me suis débrouillé tout seul !!
    Au début j'étais un peu affolé parce que je n'arrivais pas à faire tourner flex et bison correctement. Finalement ça tourne à peu près bien.
    Après l'analyse syntaxique j'ai mis les données dans des listes doublement chainées, j'ai trié et envoie dans un html. Facile quoi
    Je constate que lex et yacc n'inspire pas grand monde mais au bout du compte c'est abordable.
    Tchuss !!

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2005
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 147
    Points : 165
    Points
    165
    Par défaut
    Je constate que lex et yacc n'inspire pas grand monde mais au bout du compte c'est abordable.
    Entièrement d'accord .

    Tant mieux si tu as réussi à faire ce que tu voulais et en utilisant lex et yacc.

    @+
    Avec les ordinateurs, 99% des bugs proviennent de l'interface chaise-clavier...

    Comment ça 1Km n'est pas égal à 1024m ???

  9. #9
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    moyennement d'accord, disons que lex/yacc c'est très lourd pour ce que ça fait... dans la plupart des cas, il existe des parseurs ad-hoc beaucoup plus légers à utiliser

    à part pour les grammaires réellement LALR je ne vois pas trop pourquoi l'utiliser... et du "prototypage de parseurs" en C n'est pas forcemment idéal
    en revanche, ça a l'avantage de bien séparer les parties : analyse lexicale, puis analyse syntaxique, puis éventuelles analyses sémantiques & cie
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

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

Discussions similaires

  1. Analyseur syntaxique avec flex et bison
    Par charrynsasi dans le forum Générateurs de compilateur
    Réponses: 3
    Dernier message: 03/11/2012, 10h13
  2. compilateur C avec Flex et Bison
    Par fattouch_squall dans le forum Choisir un environnement de développement
    Réponses: 1
    Dernier message: 10/05/2009, 17h56
  3. yyin avec Flex et Bison sous ubuntu8.10
    Par bilred dans le forum Linux
    Réponses: 1
    Dernier message: 08/04/2009, 12h10

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