Objetivo
Usando el lenguaje de programación de su elección, escriba el programa más corto para eliminar los comentarios de una cadena que representa un programa en C.
Entrada
La cadena se puede tomar como cualquier forma de entrada, pero también se puede tomar como una variable.
Instrucciones
Se deben eliminar dos tipos diferentes de comentarios:
- comentarios multilínea , comenzando
/*
y terminando con*/
- comentarios de una sola línea , comenzando
//
y terminando con saltos de línea estilo Linux (LF,\n
)
Los comentarios dentro de las cadenas no se deben eliminar. Para el propósito de este desafío, solo necesita considerar "
cadenas delimitadas. En particular, puede ignorar la posibilidad de '
literales de caracteres delimitados. También puede ignorar los trigrafos y las continuaciones de línea ( /\<LF>*...
).
Ejemplos
Entrada:
#include <stdio.h>
int main(int argc, char** argv)
{
// this comment will be removed
if (argc > 1) {
printf("Too many arguments.\n"); // this too will be removed
return 1;
}
printf("Please vist http://this.will.not.be.removed.com\n");
printf("/* This will stay */\n");
printf("\"/* This will stay too */\"\n");
printf("//and so will this\\");
// but not this
printf("just \"ano//ther\" test.");
return 0;
}
Salida:
#include <stdio.h>
int main(int argc, char** argv)
{
if (argc > 1) {
printf("Too many arguments.\n");
return 1;
}
printf("Please vist http://this.will.not.be.removed.com\n");
printf("/* This will stay */\n");
printf("\"/* This will stay too */\"\n");
printf("//and so will this\\");
printf("just \"ano//ther\" test.");
return 0;
}
Entrada:
/*
this shall disappear
*/
#include <string>
int main(int argc, char** argv)
{
string foo = ""/*remove that!**/;
// Remove /* this
int butNotThis = 42;
// But do */ remove this
int bar = 4 /*remove this*/* 3; // but don't remove that 3. */
return 0;//just a comment
}/*end of the file has been reached.*/
Salida:
#include <string>
int main(int argc, char** argv)
{
string foo = "";
int butNotThis = 42;
int bar = 4 * 3;
return 0;
}
// this comment will be removed
cuales simplemente desaparecieron. ¿Alguna regla para eso?
printf("\"/* This will stay too */\"\n");
apareció eso en el debería convertirse en código?