hirthwork
11.07.2012 18:06 mcabber313ED323
посоны, а вот ежели есть у меня сырец с каментами типа //, /* */ и в этом сырце ещё строчки плюсовые могу встречаться между закавычками, то как по умному похерить из этого файла и строки и каменты? ведь в коде же может быть хуита типа const char* c = "/*"; const char* c2 = "*/"; ← тут-то нихуя нельзя вырезать просто всё что между /* и */. в общем, я раздумьях.
// — простым s#^\s*//.*$##. /* */ — сначала grep '/*', потом текстовым редактором с заменой и проверкой.
хм. может второй тег тебе не подсказал, но это нужно запрограммировать.
эм, никак?
почему «никак»? можно, но уж больно ёбко. я пока что ищу метод попроще
и как ты отличишь тобой дже приведенный пример?
Не подсказал. Я его ставлю на все посты, имеющие отношение к программированию, например.
То, что ты хочешь, могут уметь какие-нибудь рефакторы в IDE. В общем случае задача регулярками не решится, как мне кажется, по крайней мере, не в разумные сроки.
например сначала удалить все заэксейпленные строки (в валидном плюсовом коде не может идти слеш перед началом строки), затем бежать по тексту, если нашли кавычку — удалить всё до следующей кавычки. если нашли // — удалить всё до \n. если нашли /* — удалить всё до */. ничего сложного, но хотеть что либо попроще
блядь, какие нахуй IDE? я, блядь, по твоему должен IDE ставить всюду где нужно такое действие выполнять? съеби уже, дай поцанам о программировании поговорить. о программировании, блядь, а не обработке текста программ в IDE
ответ на /6 obv
cpp(1) ?
правильно, регекспами не решится. тут надо полноценный парсер
и как?
да просто обрабатывать выхлоп cpp вместо исходного файла. Если тебя они смущают, можешь перед этим убрать из файла все #include
или можешь таки навелосипедить небольшой парсер на lex, парсить надо будет только небольшое подмножество языка, так что это не должно быть очень сложно
охнихуясебе. я и не знал, что cpp умеет комментарии резать
ну, теперь знаешь :)
ога. спасибо
алсо, я осознал что похуй и вообще. проблема реально решается нежадными регулярками.