Newsgroup: it.comp.lang.c++
Titolo: // Comenti rompipalle !

Ciao a tutti,
volevo sapere se c'e un modo automatico e veloce per rimuovere
tutti i commenti che il Visual si fa in automatico.
Danno un fastidio atroce(a me)
Ciao
HS_
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


Ti fai un bel programmino che accettato in input il nome di un file, passa
in rassegna tutte le righe e dove trova la sequenza "//", cancella il resto
della riga.
Un bell'esercizietto che unisce l'utile al dilettevole.
Maurus

 Ciao a tutti,
[...]
Mi pare che c'è l'opzione se inserire i commenti o no durante il processo di
creazione guidata. (per gli scansafatiche che non hanno voglia di fare il
programma di Maurus).
Ciauz.
--
Alberto

 Un bell'esercizietto che unisce l'utile al dilettevole.
Ma devi fare atenzione a rige come queste:
 //{{AFX_MSG(CFilterDlg)
 //}}AFX_MSG
se non vuoi che ClassWizard si arrabbia.
:-)
                Ana


Hai ragione Ana,
mi ero dimenticato del wizard delle MFC che introduce questa simpatica
sintassi.
Be' a questo punto il discorso di prima rimane valido a meno di non
incontrare "quaterne" del genere.
Maurus

Io non lo ho visto nel processo guidato.
Dove è ?
Ciao.


 Dove è ?
Dipende di tipo di progetto, in un passo te chiede se vuoi "to generate
source file comments" e default e' "yes".
:-)
            Ana

 cancella il resto della riga.
occhio a casi del genere:
std::cout << "Ciao // ciao" << std::endl;
/* Questo e` un commento // corretto */
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 --
Azzz....l'affare si ingrossa.
Sai essere diabolico Antonio.
Ok, in questo programmino bisognera' quindi stare attenti alle quaterne
"//{{" e "//}}" (per motivi di Wizard del VisualC++) e inoltre per tutti i
// all'interno di stringhe (azionare un flag quando si incontra " e
spegnerlo quando si incontra un altro " con il flag azionato) ed infine
stesso ragionamento per la sequenza "/*" e "*/".
Chissa' come ho il sospetto che la storia non sia finita qui...
Maurus

 Chissa' come ho il sospetto che la storia non sia finita qui...
Per quel che riguarda i // (e tralasciando i "//{{" ) io avevo fatto
questo in python
http://groups.google.com/groups?ie=UTF-8&oe=UTF-8&as_umsgid=5%25az9.10552%24
Zn2.296381%
40twister1.libero.it
&lr=&hl=it
Perň la soluzione migliore penso sia quella di fare un parser un po'
piů serio che si "mangia" un carattere alla volta e si comporta
di conseguenza.
--
Gerolamo

occhio a casi del genere:
<...>
Tempo fa scrissi un filtro per rimuovere i commenti, ma non gestisce
anche il caso delle direttive del VC++, lo si puo` modificare,
eventualmente.  Lo posto di seguito:
#include <stdio.h>
static int stato = 0 ;
int main()
{
    int c ;
    while (( c = getchar() ) != EOF)
    {
          switch( stato )
          {
                case 0 : switch ( c )
                         {
                                case '/'  : stato = 1 ; break ;
                                case '\"' : putchar( '\"' ) ;
                                            stato = 2 ; break ;
                                default   : putchar( c ) ;
                         } ; break ;
                case 1 : if ( c == '*' )
                         {
                            stato = 4 ;
                         }
                         else
                         if ( c == '/' )
                         {
                            stato = 6 ;
                         }
                         else
                         {
                            putchar( '/' ) ;
                            putchar( c ) ;
                            stato = 0 ;
                         }
                         break ;
                case 2 : if ( c == '\\' )
                         {
                            stato = 3 ;
                         }
                         else
                         if ( c == '\"' )
                         {
                            putchar( '\"' ) ;
                            stato = 0 ;
                         }
                         else
                            putchar( c ) ;
                         break ;
                case 3 : putchar( '\\' ) ;
                         putchar( c ) ;
                         stato = 2 ;
                         break ;
                case 4 : if ( c == '*' ) stato = 5 ; break ;
                case 5 : if ( c == '/' )
                         {
                            stato = 0 ;
                         }
                         else
                         {
                            stato = 4 ;
                         }
                         break ;
                case 6 : if ( c == '\n' )
                         {
                            putchar( '\n' ) ;
                            stato = 0 ;
                         }
                         break ;
                default : putchar( c ) ;
          }
    } return 0 ;
}
-- 
Andrea Laforgia
#exclude <windows.h>

 di conseguenza.
volendo sparare con un bazooka ad un moscerino tra gli esempi di
Spirit [1] c'e' un preprocessore per il C++ in avanzato stadio di
sviluppo.
Ciao,
Nicola
[1] The Spirit Parser Framework - 
http://spirit.sourceforge.net

             Ana
Anche disattivandolo e mettendolo in
 
   "No please"
I commenti vengono generati ugualmente.
Avevo già provato cosi' .
