Перейти к содержанию
    

fpga_student

Свой
  • Постов

    302
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о fpga_student

  • Звание
    Местный
    Местный

Посетители профиля

2 544 просмотра профиля
  1. Давайте всеже завершим правильными регэкспами тему, что началась с регэкспов неправильных. Правильные regexp-ы для PowerGrip. Который оказался абсолютный чемпион в этом деле. \)\s*[\n\r]+\s*\{\s*[\n\r]+ ){\n do\s*[\n\r]+\s*\{\s*[\n\r]+ do{\n else\s*[\n\r]+\s*\{\s*[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{\s*[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{\s*[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{\s*[\n\r]+ struct{\n union\s*[\n\r]+\s*\{\s*[\n\r]+ union{\n \=\s*[\n\r]+\s*\{\s*[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{\s*[\n\r]+ PROTOTYPE {\n Этот набор регэкспов переводит в cтиль «K&R» любое форматирование с вынесенной на следующую строку открывающей скобкой.
  2. USART упал с неправильных регэкспов в неправильном туле. Завершение истории - правильные регэкспы в правильном туле.
  3. Да, таки дожал PowerGrep - он самый крутой. Фантастическая скорость работы, раз в 10 быстрее ближайшего конкурента. Погрипано этим набором регэкспов 500 метров сорцов на самом отстойном ноуте чуть не 2 ядра 1.5ГГц за 10 минут. Единственный тул что может отработать без ошибок регэкспы на несколько строк. \)\s*[\n\r]+\s*\{\s*[\n\r]+ ){\n do\s*[\n\r]+\s*\{\s*[\n\r]+ do{\n else\s*[\n\r]+\s*\{\s*[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{\s*[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{\s*[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{\s*[\n\r]+ struct{\n union\s*[\n\r]+\s*\{\s*[\n\r]+ union{\n \=\s*[\n\r]+\s*\{\s*[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{\s*[\n\r]+ PROTOTYPE {\n
  4. Еще двое суток ужасных мучений и наконец-то удалось подобрать программу и регэкспы которые худо-бедно работают. Походу все что работает с регэкспами донельзя глюкавое в многострочных выражениях. Единственное кого недожал - PowerGrep - уж больно у него странный интерфейс(( хотя возможно он лучший из всех) Итоговые замены делает Multiple Search and Replace v.6.9. Тот же самый набор регэкспов в AdvanceFind&Replace 9.0 периодически недочищает символы перевода строки. Этот набор регэкспов переводит в рациональный "классический K&R" стиль любой другой с торчащей открывающей скобкой: \)\s*[\n\r]+\s*\{[\n\r]+ ){\n do\s*[\n\r]+\s*\{[\n\r]+ do{\n else\s*[\n\r]+\s*\{[\n\r]+ else{\n \"C\"\s*[\n\r]+\s*\{[\n\r]+ "C"{\n enum\s*[\n\r]+\s*\{[\n\r]+ enum{\n struct\s*[\n\r]+\s*\{[\n\r]+ struct{\n union\s*[\n\r]+\s*\{[\n\r]+ union{\n \=\s*[\n\r]+\s*\{[\n\r]+ = {\n PROTOTYPE\s*[\n\r]+\s*\{[\n\r]+ PROTOTYPE {\n зы. Периодически ОНО оставляет пробел, вопреки всему(( Те получается ) {, вместо ){. Мне уже болт, главное текст занимает минимум по высоте места, кому охота приключений может дотанцевать сам. Попытаться)
  5. в файнридере это делается в 2 кнопки)) но потом еще нужно вычистить мусор. Ну и причесать
  6. Да уже. Мне казалось гдето видел готовое красивое
  7. Хочу чтобы был человеческий файл, как у китайцев, типа как в аттач. Чтобы было видно где ремап нужно делать. AT32F403A_pinout_all.ods Хочу не кубохал
  8. Они сам язык еще написали) Там видно, что тот кто писал hal, тупо снес условный оператор(видимо в 403a условие не нужно проверять в отличие от 415), и половину ветвления, а операторные скобки оставил на месте
  9. Если верить Хабру, то поклонниками рационального стиля были Керниган и Ричи. Интересно они тоже были писарями ?) Файл system_at32f415.c : case CRM_SCLK_PLL: pll_clock_source = CRM->cfg_bit.pllrcs; if(CRM->pll_bit.pllcfgen == FALSE){ /* get multiplication factor */ pll_mult = CRM->cfg_bit.pllmult_l; pll_mult_h = CRM->cfg_bit.pllmult_h; /* process high bits */ if((pll_mult_h != 0U) || (pll_mult == 15U)){ pll_mult += ((16U * pll_mult_h) + 1U); } else{ pll_mult += 2U; } if (pll_clock_source == 0x00){ /* hick divided by 2 selected as pll clock entry */ system_core_clock = (HICK_VALUE >> 1) * pll_mult; } else{ /* hext selected as pll clock entry */ if (CRM->cfg_bit.pllhextdiv != RESET){ /* hext clock divided by 2 */ system_core_clock = (HEXT_VALUE / 2) * pll_mult; } else{ system_core_clock = HEXT_VALUE * pll_mult; } } } else{ pll_ms = CRM->pll_bit.pllms; pll_ns = CRM->pll_bit.pllns; pll_fr = CRM->pll_bit.pllfr; if (pll_clock_source == 0x00){ /* hick divided by 2 selected as pll clock entry */ pllrcsfreq = (HICK_VALUE >> 1); } else{ /* hext selected as pll clock entry */ if (CRM->cfg_bit.pllhextdiv != RESET){ /* hext clock divided by 2 */ pllrcsfreq = (HEXT_VALUE / 2); } else{ pllrcsfreq = HEXT_VALUE; } } system_core_clock = (uint32_t)(((uint64_t)pllrcsfreq * pll_ns) / (pll_ms * (0x1 << pll_fr))); } break;
  10. несильно понятно где может возникнуть такая потребность. Тем более что код в основном плюсовой, те капсуляция в обьектах должна быть. Это другое с case проблем не будет. От обезьяны с гранатой нет спасенья, в коде идиота можно и без rename-ов подорваться. Вот кстати опять наткнулся. Интересно бы понять в чем здесь сакральный смысл скобок. Файл system_at32f403a_407.c case CRM_SCLK_PLL: pll_clock_source = CRM->cfg_bit.pllrcs; { /* get multiplication factor */ pll_mult = CRM->cfg_bit.pllmult_l; pll_mult_h = CRM->cfg_bit.pllmult_h; /* process high bits */ if((pll_mult_h != 0U) || (pll_mult == 15U)){ pll_mult += ((16U * pll_mult_h) + 1U); } else{ pll_mult += 2U; } if (pll_clock_source == 0x00){ /* hick divided by 2 selected as pll clock entry */ system_core_clock = (HICK_VALUE >> 1) * pll_mult; } else{ /* hext selected as pll clock entry */ if (CRM->cfg_bit.pllhextdiv != RESET){ hext_prediv = CRM->misc3_bit.hextdiv; /* hext clock divided by 2 */ system_core_clock = (HEXT_VALUE / (hext_prediv + 2)) * pll_mult; } else{ system_core_clock = HEXT_VALUE * pll_mult; } } } break;
  11. Поставил Advanced Find and Replace, видно из анализа больших исходников действительно могут возникнуть при правке проблемы. Но для того чтобы они случились код должен быть написан весьма криво. Например вот такой кусок сломается: //if () { ..... } Уже видел в одном месте, странную конструкцию, где были открывающие и закрывающие скобки, а самого оператора (if или while или do) не было вообще. Радость только в том что в такой ситуации код сломается с ошибкой. Регулярка уже такая \)\s*\r\n\s*{\s*\r\n на ){\n
  12. Не это не ко мне, а к Artery. "While" - это из их Firmware_Library) Но такто Artery не единственные, кто грешит "While". Ими вообще ВСЕ грешат, начиная с Ритчи) Абсолютно согласен. Такое ощущение что некоторые граждане пытаются нагнать обьем кода в страницах, забивая все пробелами, скобками, переносами и любой возможной не относящейся к делу хренью
  13. уже работает и так, но спасибо за интересную ссылку
×
×
  • Создать...