Bonjours a tous,
Je suis actuellement en stage pour valider ma dernière année de DUT GEII (Génie Électrique et Informatique Industrielle).
Comme pendant tout stage, j'ai un projet à réaliser.
En effet, j'ai pour mission de réaliser un analyseur syntaxique avec Flex et Bison. La programmation de ce type n'étant vraiment pas le coeur de ma formation je rencontre quelques difficultés.
Je dois parser des commentaires de fichier XML. Ces derniers sont rédigés en syntaxe wiki.
Exemple :
Je dois donc convertir cette syntaxe en code HTML par exemple :
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 /** =Header= § Name: Contrat structuré § Document: File § Direction: N/A § Authors: Afidium - David Faveur (DF) § Language: FR § Summary: Un contrat structuré généré par Open Age et utilisé par WOrd pour générer le contrat papier. § Version: 1 § Implementation+_Host_+_Date_: 1 (Implémentation réelle du message) (im) § History+DF+2009-11-01+Create: Création initiale du fichier § ToDo +DF+2009-11-27+Update: Intégrer les modifications prévues sur le référentiel =Usage= Ce fichier est utilisé dans la génération papier du document. Il contient tous les éléments spécifiques permettant la génération du contrat =Description= Un contrat sous forme structuré contient les informations suivantes: *Informations obligatoires **le numéro de référence du contrat (Année-[Saison]-Timestamp **le type de contrat (R, M, C) ...
"=Header= bla bla bla" doit devenir "<Header> Bla Bla bla </Header>".
Mais je rencontre d'énorme difficultés... C'est la première fois que je manipule Flex & Bison et le langage XML aussi.
Un des problèmes rencontrés, par exemple, est que je ne sais pas comment lui faire savoir qu'il doit fermer les balises (Ex: </Header>). Car il y a un moment bien précis pour le faire...
Si il fallait juste les ouvrir je pensais faire quelque chose dans ce style là :
Flex :
Bison :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11%{ #include <stdlib.h> %} "=Header=" return(HEADER); "=Usage=" return(USAGE); "=Structure=" return(STRUCTURE); "$" return(Paragraphe); "*" return(Element) "**" return(SousElement);
Mais forcement là, ça ne marchera pas :-/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14%token HEADER %token STRUCTURE %token USAGE %token Paragraphe %token Element SousElement %% ALO : | HEADER {printf("<Header>");} ...
Pouvez vous m'aider ?
Merci d'avance !
Partager