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

Autres éditeurs Discussion :

[ lex ] Source C/C++ vers HTML


Sujet :

Autres éditeurs

  1. #1
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut [ lex ] Source C/C++ vers HTML
    Bonjour à tous,

    Je dois utiliser l'outil lex (flex) pour produire à partir d'un fichier source C/C++ une page HTML respectant le formatage initial (retours ligne, indentation) et mettant en relief mots-clés, instructions du pré-processeur, chaînes de caractères et commentaires.

    Je débute avec cet outil, et je bloque sur les directives pré-processeurs à traduire contenant le caractère '<' qui doit être traduit en "&lt;", voici les règles que j'ai créées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [<] { puts( "&lt;" ); }
    #[^\n]* { printf( "<font color=\"blue\">%s</font>\n" , yytext ); }
    Mais ça ne fonctionne pas, j'obtiens en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <font color="Blue">#include <fifo.h></font><font color="Blue">#define NVOISINS 8</font>&lt;&lt;
    Pourquoi les "&lt;" sont-ils placés à la fin ? Comment résoudre le problème ?

    Merci beaucoup !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Je pense que tu ne peux pas parser un truc dans un autre.

    Si tu veux que ça marche ainsi, tu dois passer par des états (typiquement pour le C, j'utilise un état préprocesseur, un état commentaire bloc, un état commentaire uniligne et un état normal). Ou bien, il peut être plus simple de remplacer directement tes appels à printf() et compagnie par des fonctions de sortie qui remplacent en temps réel les caractères à échapper, par exemple:
    Code lex : Sélectionner tout - Visualiser dans une fenêtre à part
    #[^\n]* { printf( "%s", "<font color=\"blue\">); htmlout(yytext);  printf("%s", "</font>\n"); }
    Code C : 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
    void htmlout(char const *str)
    {
    	size_t i;
    	for(i=0 ; str[i]!='\0' ; i++)
    	{
    		switch(str[i])
    		{
    		case '\n':
    			printf("%s", "<br>"); /* ou <br /> si tu es en xhtml */
    			break;
    		case '<':
    			printf("%s", "&lt;");
    			break;
    		case '>':
    			printf("%s", "&gt;");
    			break;
    		case '&':
    			printf("%s", "&amp;");
    			break;
    		case '\'':
    			/*Note: virer l'espace, inséré à cause d'un problème avec le forum */
    			printf("%s", "& #39"); /* utiliser le code ASCII parce que "& apos;" ne marche pas partout */
    			break;
    		case '\"':
    			/*Note: virer l'espace, inséré à cause d'un problème avec le forum */
    			printf("%s", "& quot;");
    			break;
    		default:
    			putchar(str[i]);
    			break;
    		}
    	}
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 156
    Points : 76
    Points
    76
    Par défaut
    Ok merci beaucoup !

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

Discussions similaires

  1. [Sources] BBcode vers html
    Par Moumoutte dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 29/01/2010, 17h55
  2. Tableaux WORD vers HTML
    Par luxmen dans le forum VBA Word
    Réponses: 15
    Dernier message: 02/02/2009, 12h01
  3. newbie : fichier xml vers html via command-line
    Par morti dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/11/2005, 07h34
  4. Conversion WORD vers HTML V4
    Par elitost dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/09/2005, 16h24
  5. XML/XSL vers HTML: comment transformer les linefeed en <B
    Par AlainM dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 18/11/2003, 12h30

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