Forum Programmation.shell Convertir les commentaires c++ en c

Posté par .
Tags : aucun
1
25
sept.
2010
Oyez, oyez, amis pointilleux et psycho-rigides.. Voyez le défi à votre hauteur poindre à l'horizon :

après de nombreux essais et recherches infructueux, j'ai fini par trouver la commande sed qui permet de transformer ces satanés commentaires :

// commentcommentcomment

en de magnifique

/* commentcommentcomment */

grâce à : sed "s?//\(.*\)?/* \1 */?"

On pourrait s'arrêter là bien sûr.
Mais que dire des :

// commentcommentcomment
// commentcommentcomment
// commentcommentcomment

qui pourraient devenir des encore plus sublimes :

/* commentcommentcomment
commentcommentcomment
commentcommentcomment */

Je crains d'avoir atteint mes limites en sed et devoir renoncer..

Quelqu'un pour une idée, une piste ?

Merci.
  • # .

    Posté par (page perso) . Évalué à 2.

    C'est pas du sed, mais : http://people.sc.fsu.edu/~jburkardt/cpp_src/recomment/recomm(...) pourrait être ton ami.
  • # Perl ftw

    Posté par (page perso) . Évalué à 4.

    Bon, ça va poser problème si tu as un truc genre « char plop[] = "foo//bar"; » mais sinon ça a l'air de marcher :
    my $incomment;
    while (<>) {
            chomp;
            if (not m|^\s*//| and $incomment) {
                    s|^| */$/|;
                    undef $incomment;
            }
            if (m|//| and not $incomment++) {
                    s|//|/\*|;
                    s|$|$/|;
                    next;
            }
            if ($incomment and m|^\s*//|) {
                    s|(\s*)//|$1|;
                    next;
            }
            if (not $incomment and not m|//|) {
                    s|$|$/|;
            }
    } continue {
            print;
    }

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: Perl ftw

      Posté par . Évalué à 1.

      Merci à tous pour vos réponses..
      Voici comment j'ai fait pour utiliser le script shell : j'ai copié le tout dans un fichier.pl
      puis

      perl fichier.pl Fichier_En_Ansi_C.c

      Est-ce correct ?

      Sinon, le script n'a pas l'air de fonctionner mais j'ai provisoirement une version très ancienne d'ubuntu et donc de perl. Peut-être est-ce dû à cela ?

      Merci et à bientôt.


      PS : cela va me permettre de m'initier à la programmation en Perl ce que je comptais faire.. Je vais essayer de modifier ton script pour qu'il tienne compte des commentaires imbriqués comme eMacs, com/*ment -> /* com/\*ment */
      Je le posterai pour ceux que ça intéresse..
      • [^] # Re: Perl ftw

        Posté par . Évalué à 3.

        En fait le script lit l'entrée standard (<>) donc il faut mettre ton fichier en entrée. Par exemple
        <Fichier_En_Ansi_C.c perl fichier.pl
        et le résultat vient sur la sortie standard.

        Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.