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

Affichage des résultats du sondage: Trouvez-vous ce logiciel utile ?

Votants
4. Vous ne pouvez pas participer à ce sondage.
  • wééééééééééééééééé

    2 50,00%
  • moué

    1 25,00%
  • bof bof

    1 25,00%
  • Pas du tout

    0 0%
Mon programme Discussion :

Programme de coloration de code vers le HTML


Sujet :

Mon programme

  1. #1
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut Programme de coloration de code vers le HTML
    Bonjour à tous,

    Le but de mon programme est, à partie d'un fichier de code C, de générer une page HTML, avec le code coloré. Cela implique la détection du vocabulaire du C, la prise en charge des commentaires, des macros, des chaines de caractères… J'ai donc bien avancé, et je pense que mon programme est maintenant pratiquement au point, en tout cas pour ce qui concerne la coloration, puisque je compte aussi lui permettre d'indenter le code.

    Je ne peux pas mettre en ligne de binaire compilé puisque je travaille sur un Mac, qui plus est avec une architecture PPC. Je met donc à disposition les sources. Elles sont compatibles tous systèmes, puisque je n'ai utilisé que les fichiers d'en-tête standards.

    Je compte sur vous pour faire des tests, me dire ce qui va, ou ne va pas, enfin bref essayer le programme.

    Pour l'instant, il n'y a qu'un seul bug (à ma connaissance) que je n'ai pas encore réglé : les nombres hexadécimaux ne sont pas colorés, contrairement aux nombres décimaux.

    À part ça, si les couleurs que j'ai choisies ne vous plaisent pas, sachez que je prévois de permettre à l'utilisateur de les choisir lui-même.

    Merci à tous les testeurs, et bon développement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    C'est codé très clairement.
    EEuuuuuh mais le code n'est pas commenté.
    Moi je veux bien, mais bon ...
    Je suis débutant, je trouve ce genre de projet très instructif et très intéressant. Je doute néanmois de pouvoir y apporter quelque chose.
    Je vois que tu utilises les feuilles de style. Il est évidemment intéressant de respecter les nouveaux standards xhtml (strict xhtml) pour la présentation du code. Le html est voué à disparaîre.

    En tout cas bravo pour ton projet bien codé.

  3. #3
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Merci.

    Je n'ai pas publié le code dans le but de montrer à tous comment j'ai fait mon programme, mais simplement pour que le logiciel lui-même soit accessible à tous. C'est aussi pour ça qu'il n'est pas commenté. Pourrais-tu ajouter en pièce jointe le logiciel compilé ? Je suppose que tu es sous Windows.

    J'ajoute le binaire pour Mac OS X PowerPC :
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    J'ai profité du temps libre pour apprendre à utiliser les makefiles, je fournis donc maintenant les sources avec le makefile, donc plus besoin de se casser la tête, suffit d'utiliser make.
    D'après moi, la façon dont on devait compiler mon logiciel n'était pas des plus simple, je pense que c'est pour ça que certains ne l'ont pas testé. Maintenant plus d'excuse !

    P.S.: je serais très reconnaissant aux développeurs autres que Mac (PPC) de poster en pièce jointe le binaire compilé
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Aller cadeau

    Indenteur.tar.gz

    Compilé sous OpenSuSE 10.2
    gcc : gcc version 4.1.2 20061115 (prerelease) (SUSE Linux)

    Log de compil:

    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
    
    src/tools.c: In function ‘str_cat’:
    src/tools.c:51: warning: implicit declaration of function ‘strdup’
    src/tools.c:51: warning: return makes pointer from integer without a cast
    src/config.c: In function ‘getSrcPath’:
    src/config.c:26: warning: comparison between pointer and integer
    src/config.c:37: warning: implicit declaration of function ‘strdup’
    src/config.c:37: warning: return makes pointer from integer without a cast
    src/config.c: In function ‘getTitle’:
    src/config.c:49: warning: comparison between pointer and integer
    src/config.c:52: warning: return makes pointer from integer without a cast
    src/config.c: In function ‘getDestinationPath’:
    src/config.c:64: warning: comparison between pointer and integer
    src/config.c:69: warning: return makes pointer from integer without a cast
    src/html.c: In function ‘html_c_encoder’:
    src/html.c:322: warning: implicit declaration of function ‘strdup’
    src/html.c:324: warning: assignment makes pointer from integer without a cast
    src/main.c: In function ‘main’:
    src/main.c:68: warning: implicit declaration of function ‘strdup’
    src/main.c:68: warning: initialization makes pointer from integer without a cast
    src/main.c:88: warning: initialization makes pointer from integer without a cast
    -> Indenteur built

    Sinon ça tourne (essayé sur un code java, bon forcément pas beaucoup de couleurs à la sortie)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  6. #6
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    ah ok… je vois qu'il reste quelques petits trucs à corriger .

    Et sinon pour les couleurs, tu peux utiliser par exemple les sources du logiciel lui-même.
    Je ne sais pas exactement comment les codes Java sont arrangés, mais s'il s'agit juste d'une liste de vocabulaire à ajouter, c'est pas bien compliqué. Suffit qu'on me donne la liste

    Sinon merci pour la compile, j'arrange tous les avertissements dès que j'ai un peu de temps (enfin ça m'a pas l'air bien compliqué), et je poste la nouvelle version.

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En ce qui concerne java ne t'embêtes pas trop ça existe déja: http://www.java2html.de/

    Pour les mots clefs: http://baptiste-wicht.developpez.com...mots-reserves/
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  8. #8
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Je viens de jetter un oeil au code. Je trouve les problèmes dûs à strdup bizarres, à vrai dire je ne vois pas où est le problème.
    De plus, même en utilisant des paramètres de parano pour gcc je n'obtiens pas les mêmes problèmes que toi (GCC 3.3).

    J'ai utilisé ça pour le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -Wall -ansi -Wchar-subscripts -Wcomment -Wformat=2 -Wimplicit-int
    -Werror-implicit-function-declaration -Wmain -Wparentheses
    -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused
    -Wunknown-pragmas -Wfloat-equal -Wundef
    -Wshadow -Wpointer-arith -Wbad-function-cast -Wwrite-strings
    -Wconversion -Wsign-compare -Waggregate-return -Wstrict-prototypes
    -Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn
    -Wformat -Wmissing-format-attribute -Wno-deprecated-declarations
    -Wpacked -Wredundant-decls -Wnested-externs -Winline -Wlong-long
    -Wunreachable-code
    Et voilà ce que j'obtiens dans la console :
    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
    src/tools.c: In function `getUserEntries':
    src/tools.c:133: warning: passing arg 2 of `fgets' as signed due to prototype
    src/html.c:37: warning: initialization discards qualifiers from pointer target type
    src/html.c:37: warning: initialization discards qualifiers from pointer target type
    src/html.c:37: warning: initialization discards qualifiers from pointer target type
    src/html.c:37: warning: initialization discards qualifiers from pointer target type
    src/html.c:38: warning: initialization discards qualifiers from pointer target type
    src/html.c:38: warning: initialization discards qualifiers from pointer target type
    src/html.c:38: warning: initialization discards qualifiers from pointer target type
    src/html.c:38: warning: initialization discards qualifiers from pointer target type
    src/html.c:39: warning: initialization discards qualifiers from pointer target type
    src/html.c:39: warning: initialization discards qualifiers from pointer target type
    src/html.c:39: warning: initialization discards qualifiers from pointer target type
    src/html.c:39: warning: initialization discards qualifiers from pointer target type
    src/html.c:40: warning: initialization discards qualifiers from pointer target type
    src/html.c:40: warning: initialization discards qualifiers from pointer target type
    src/html.c:40: warning: initialization discards qualifiers from pointer target type
    src/html.c:40: warning: initialization discards qualifiers from pointer target type
    src/html.c:41: warning: initialization discards qualifiers from pointer target type
    src/html.c:41: warning: initialization discards qualifiers from pointer target type
    src/html.c:41: warning: initialization discards qualifiers from pointer target type
    src/html.c:41: warning: initialization discards qualifiers from pointer target type
    src/html.c:42: warning: initialization discards qualifiers from pointer target type
    src/html.c:42: warning: initialization discards qualifiers from pointer target type
    src/html.c:42: warning: initialization discards qualifiers from pointer target type
    src/html.c:42: warning: initialization discards qualifiers from pointer target type
    src/html.c:43: warning: initialization discards qualifiers from pointer target type
    src/html.c:43: warning: initialization discards qualifiers from pointer target type
    src/html.c:128: warning: no previous prototype for `addBasicLetterToWord'
    En gros il n'a pas aimé ma façon d'assembler la liste de vocabulaire (que je pense être pourtant tout à fait correcte) :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char *vocab[26] =
    { "if", "else", "switch", "case",
    	"break", "default", "NULL", "for",
    	"while", "return", "const", "static",
    	"unsigned", "char", "short", "int",
    	"long", "double", "float", "void",
    	"sizeof", "typedef", "enum", "struct",
    	"union", "extern" };

    Enfin bref je n'ai pas du tout les mêmes problèmes. Quant à la compilation avec le makefile que j'ai fourni, donc avec juste les options -Wall -ansi, je n'obtiens aucun message d'avertissement. Peut-être qu'il y a des modifications à faire avec les autres OS que les Macs… je ne sais pas trop, et surtout je ne peux pas le vérifier.

  9. #9
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Points : 1 111
    Points
    1 111
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    char *vocab[26] =
    { "if", "else", "switch", "case",
    	"break", "default", "NULL", "for",
    	"while", "return", "const", "static",
    	"unsigned", "char", "short", "int",
    	"long", "double", "float", "void",
    	"sizeof", "typedef", "enum", "struct",
    	"union", "extern" };
    un tableau de pointeurs sur des char, c'est assez violent, en effet.
    Voilà la compilation sous Sarge version gcc 3.3.5 (Debian 1:3.3.5-13)
    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
    src/tools.c: Dans la fonction « str_cat »:
    src/tools.c:51: attention : implicit declaration of function `strdup'
    src/tools.c:51: attention : return transforme un entier en pointeur sans transtypage
    src/config.c: Dans la fonction « getSrcPath »:
    src/config.c:26: attention : comparaison entre un pointeur et un entier
    src/config.c:37: attention : implicit declaration of function `strdup'
    src/config.c:37: attention : return transforme un entier en pointeur sans transtypage
    src/config.c: Dans la fonction « getTitle »:
    src/config.c:49: attention : comparaison entre un pointeur et un entier
    src/config.c:52: attention : return transforme un entier en pointeur sans transtypage
    src/config.c: Dans la fonction « getDestinationPath »:
    src/config.c:64: attention : comparaison entre un pointeur et un entier
    src/config.c:69: attention : return transforme un entier en pointeur sans transtypage
    src/html.c: Dans la fonction « html_c_encoder »:
    src/html.c:322: attention : implicit declaration of function `strdup'
    src/html.c:324: attention : affectation transforme un entier en pointeur sans transtypage
    src/main.c: Dans la fonction « main »:
    src/main.c:68: attention : implicit declaration of function `strdup'
    src/main.c:68: attention : initialisation transforme un entier en pointeur sans transtypage
    src/main.c:88: attention : initialisation transforme un entier en pointeur sans transtypage
    -> Indenteur built
    YO ! Sinon le résultat est classe, mais la première ligne de bibliothèque est collée à gauche alors que toutes les autres lignes sont décalées d'un espace.

  10. #10
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    Oui je connais ce problème. Pour l'instant je ne m'en suis pas soucié.
    Tu sautes une ligne au début de ton fichier et c'est réglé.

  11. #11
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Spootnik
    Je viens de jetter un oeil au code. Je trouve les problèmes dûs à strdup bizarres, à vrai dire je ne vois pas où est le problème.
    A moins, que tu n'ais implanté ta propre version de strdup, cette fonction ne fait pas partie du standard C et il est possible qu'elle manque sur certaines plateformes. strdup() est toutefois très facile à reimplanter afin d'assurer un portabilité maximale.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  12. #12
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Les EDI comme Code::Blocks font déjà de l'export du code en HTML.

    Je regarderai quand même ton code si j'ai le temps.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  13. #13
    Membre expérimenté Avatar de Ceylo
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 216
    Points : 1 312
    Points
    1 312
    Par défaut
    C'était un petit projet pour me faire la main . Normal que ça ne soit pas très avancé . Le but au départ était de pouvoir présenter mes codes sur mon site, mais vu que mon site n'existe plus… ça ne sert plus à grand chose, surtout si tu dis que Code::Blocks fait déjà de l'export HTML.

    Enfin ça m'a tout de même permis d'apprendre pas mal de choses.
    Quant à strdup(), c'est équivalent à ça non ?

    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
     
    #include <stdlib.h>
    #include <string.h>
     
    char *monStrdup(const char *chaine)
    {
         char *resultat = NULL;
     
         if (chaine != NULL)
         {
              size_t len = strlen(chaine);
              resultat = malloc(sizeof(char) * (len + 1));
     
              if (resultat != NULL)
              {
                   *resultat = '\0';
                   strcpy(resultat, chaine);
              }
         }
     
         return resultat;
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/02/2013, 14h53
  2. Colorer son code Html pour les besoins d'un tuto
    Par majudis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/02/2010, 14h27
  3. Programmer un lecteur de code à barre
    Par tleboukaka dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/09/2005, 17h37
  4. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 15h20

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