/**
* A simple comment remover.
*/
#include "stdio.h"
#include "stdlib.h"
void main()
{
int c = 10;
int pre;
int state = 0;
while(c != EOF && (c=getchar())!= EOF)
{
switch(state)
{
case 1:/*in comment*/
while(c != EOF && state == 1)
{
while(c !='*' && c != EOF)
c = getchar();
if(c == EOF)
return;
c = getchar();
if(c != EOF && c=='/')
state = 0;
else if(c !=EOF && c == '*')
{
while( (c = getchar()) != EOF && c == '*')
;
if(c == '/')
state = 0;
}
}
break;
case 2: /* in double quote*/
while(c != EOF && state == 2)
{
putchar(c);
while(c != EOF && c != '//' && c != '"')
{
c = getchar();
if(c != EOF)
putchar(c);
}
if(c == '//')
{
if((c = getchar()) != EOF)
{
putchar(c);
c = getchar();
}
}else if(c == '"')
state = 0;
}
break;
case 3: /* in single quote */
while(c != EOF && state == 3)
{
putchar(c);
while(c != EOF && c != '//' && c != '/'')
{
c = getchar();
if(c != EOF)
putchar(c);
}
if(c == '//')
{
if((c = getchar()) != EOF)
{
putchar(c);
/* it is no side effect, if "c" is not a escape character*/
c = getchar();
}
}else if(c == '/'')
state = 0;
}
break;
case 0:/* normal*/
while(c != EOF && state == 0)
{
if(c == '"')
{
putchar(c);
state = 2;
}else if( c == '/'')
{
putchar(c);
state = 3;
}else if(c == '/')
{
int next = getchar();
if(next = '*')
state = 1;
else
{
putchar(c);/* c = '/' */
c = next;
}
}else{
putchar(c);
c = getchar();
}
}
break;
default: /* should not goes here*/
putchar(c);
}
}
return;
}