Цель
Используя язык программирования по вашему выбору, напишите самую короткую программу, чтобы исключить комментарии из строки, представляющей программу на Си.
вход
Строка может быть принята как любая форма ввода, но она также может быть принята как переменная.
инструкции
Два разных вида комментариев должны быть удалены:
- многострочные комментарии , начиная с
/*
и заканчивая*/
- однострочные комментарии , начинающиеся
//
и заканчивающиеся переводом строк в стиле Linux (LF,\n
)
Комментарии внутри строк не должны быть удалены. Для этой задачи вам нужно только рассмотреть "
строки -delimited. В частности, вы можете игнорировать возможность '
-ограниченных литералов символов. Вы также можете игнорировать триграфы и продолжения строк ( /\<LF>*...
).
Примеры
Входные данные:
#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;
}
Выход:
#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;
}
Входные данные:
/*
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.*/
Выход:
#include <string>
int main(int argc, char** argv)
{
string foo = "";
int butNotThis = 42;
int bar = 4 * 3;
return 0;
}
// this comment will be removed
которыми просто исчезли. Любое правило для этого?
printf("\"/* This will stay too */\"\n");
появилось в должен стать кодом?