2009-12-01 10 views
1

J'essaie d'aider un ami dans une mission de collège, mais j'ai en quelque sorte oublié beaucoup de C an Lex. Le fait est que nous essayons d'analyser un fichier HTML et un fichier CSS correspondant et d'ajouter un tag à son style.Insérer du texte dans le fichier d'entrée dans Lex (avec C)

Par exemple:

HTML

<body> 
</body> 

CSS

body{color:black;} 

HTML modifié

<body style="color:black;"> 
</body> 

Tous les regex sont terminés et les macros aussi.

Problème: L'entrée HTML et le HTML modifié doivent être le même fichier. Nous avons essayé de rediriger les deux yyin et yyout vers le même fichier ... puis d'utiliser le fputs (texte, yyout); où le texte est un char * avec toutes les informations de style (et style = ""). Ça ne marche pas.

Alors ... Pouvez-vous l'aider? Il est important de ne pas perdre la notion d'emplacement dans le fichier (donc le style = "" va à la bonne balise).

Merci

Répondre

3

redirect yyin et yyout dans le même fichier ne fonctionne pas .. (comme vous le savez déjà). Mon approche serait:

  1. Créer un fichier temporaire
  2. yyout écrit dans le fichier temp
  3. lors de l'analyse est arrivée, le fichier d'entrée de sauvegarde pour la sécurité
  4. remplacer le fichier d'entrée avec le fichier temporaire

Il n'y a pas d'autre moyen, si yyout est le même que yyin votre texte (entrée d'origine) sera chevauché.

+0

Merci. Autre question: pouvons-nous ouvrir le fichier css pour l'analyse et sauvegarder la position dans le fichier html? je cherche yypos mais il n'existe pas ... Merci encore –

+0

yylineno détient le numéro de ligne .. – empc