Comments 19
Мы сначала делаем интерфейс. Для UART выглядит так, например
UART interface

#!/bin/sh
OLD="$1"
NEW="$2"
grep -rl $OLD . | xargs sed -i "s/$OLD/$NEW/g"
find . -type f -exec rename -v "$OLD" "$NEW" {} \;
Здорово!
так появились на свет энциклонги :]
Главное не переименовать переменную I, будет интересно:)
тогда уж
find . -type f -exec sed -i 's/odtext/newtext/g' {} +
Я слышал, есть такие clangd или ccls -- попробуйте, вдруг зайдёт.
Или даже, чем чёрт не шутит, coccinelle.
вообще у подхода несколько решений, можно грепом, можно оттолкнуться от токенизатора, и сперва отталкиваться от языка который парсим тоесть надо знать особенности языка который будет анализироваться,
например С подобный язык хорошо кладётся на основу скобочек, сперва реализовывается просчет всех скобочек(скобочки как балансиры {}[]() - я начинал путешествие с фигурных скобок, поиск всех слов от 1 слова как функционал, все стилистические штуки просто захардкодил, но там тоже красиво можно сделать ), и тут в этой позиции, просто открываем файл в дирректории проекта анализируем хидеры, далее пока идёт анализ текущего файла надо учесть то что анализируем заходя если надо в файлы которые заинклюдены в текущий файл, это надо для того чтобы учесть вхождение), конечно можно обойти эту суету с деревом или синтаксимческим анализатором, какими-то скриптами
можно вообще уйти от рекурсии работая только с текущим файлом, учитывая слова, строки, отступы, и слово которое ищем по всему файлу, тогда анализатор всё равно будет отрабатывать просто окном будет текущий файл проекта
например в яве на свинге так прокатывает тоже, но там вилка из двух подходов, декоративная работа и работа где надо точно делать потомучто буферы текста не простые там соотв есть подход через обнуление, и через просто проходы с применением стиля оба метода вроде работают, но я знаю способ ток покачто через обнуление и хардкод
У этой команды есть три недостатка:
1--токен oldtext надо указывать два раза
2--команда длинная и ее сложно запомнить
3--команда длинная и ее долго набирать
Это ведь такая шЮтка юмора, да?
Даже не знаю что более удивительное - перепиливания драйвера UART в SPI, или переименовывание не через IDE.
Переименовывать подстроки средствами lde - это уровень кружка программирования в ГОУ СОШ 8 класса .
В 8 классе умеют переименовывать не подстроки а переменные. А в 9 - даже отличать их по области видимости.
(setq i 'j)
(set i 1)
(print j)
Где тут надо менять j, с позиций вашего 8 класса?
В обычном Си, который в микроконтроллерах с 8 класса, можно навести мышку на переменную, нажать правую педаль, выбрать rename - и оно переименует все вхождения. vscode вроде так умеет. Если в этом языке со скобками такого нет - ну, неудобно тогда.
Надо тогда начинать с преамбулы: "мой язык не поддерживает метапрограммирование".
Так-то во многих языках имя переменной можно вычислить, а не только непосредственно указать, и ide, понятное дело, об этом не в курсе.
Кажется - полезно.
Но в опросах, как всегда, не хватает промежуточных вариантов "вероятно - да" и "вероятно - нет".
Утилита R