![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
в общем, надо написать форматер из 1-го стиля во 2-ой и обратно.
лишь для фигурных скобок. т.е if() { } меняется на if() { } другая программкая делает обратное действие. собственно, подскажите, как лучше сделать? была идея написать регвыр, который бы находил мне конструкцию типа blabla(){ и добавлял как-то между ) и { перевод строки. вот, только не знаю, как он бы добавлял. или можно находить такие конструкции и добавлять их в массив, там как-то менять и засовывать обратно)) предложите, пожалуйста, пару своих идей, как вы бы это делали? ) |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
как вариант регвыром:
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
if (*a == ')' || *a == '(') {
printf("out\n"); } ? |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
ну да... с этим проблема, но тоже решаемо, все зависит от точной постановки задачи
|
|||
|
||||
| dixoNICH |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
ну, постараюсь точнее :
есть файл с кодом на перле (т.е например если конструкция map { } то её надо тоже как-то отработать и оставить как она есть) вход :
выход
то есть из одного стиля форматирования в другой. и так же обрабатывать комментарии. т.е, теперь до меня дошло, что если просто добавлять перевод строки, то комментарии тоже улетят ниже на строчку |
||||
|
|||||
| alezzz |
|
||||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
и все-таки не до конца точно.
вот такая заготовка:
при условии что: 1. делать перенос "{" если перед этим есть слово и скобки, например if(), while() и т.д. 2. не делать перенос если нет скобок, например map {}. 3. учитывать комментарии при переносе по п.1 проверял на:
|
||||
|
|||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perldoc Perl::Tidy
|
|||
|
||||
| dixoNICH |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
(\w+\s*\(.*\)) это обработка оператора и скобок, это я понял \s* пробелы дальше открывающаяся скобка - это что ? ) вторая часть регвыра не совсем понятна) |
||||||||
|
|||||||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
не работает:
# perl -plne 's/(\w+\s*\(.*\))\s*{\s*(#.*)?\n/$1 $2\n{\n/;' if (a == b) { print; } ^D if (a == b) { print; } # |
|||
|
||||
| alezzz |
|
||||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
Вывод:
|
||||
|
|||||
| dixoNICH |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
а как ещё отодвинуть { на колличество пробелов/табуляций, которое стоит перед оператором? ([\s*\t*]) добавил это в начало, но, как использовать не знаю( |
||||||
|
|||||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 1 Всего: 14 |
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
а такое сможет?
if (a == b) { # ) { ... } |
|||
|
||||
| dixoNICH |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
спасибо огромное, всё, на чём проверял, работает) 2 arto, да, работает на твоём примере |
||||
|
|||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |