Наша Система поиска исходного кода SD (SCSE) может легко это сделать.
SCSE - это инструмент для поиска больших баз исходного кода, намного быстрее, чем grep, путем индексации элементов интересующих языков исходного кода. Затем могут быть заданы запросы, которые используют индекс, чтобы обеспечить быстрое обнаружение результатов поиска. Запросы и совпадения отображаются в графическом интерфейсе, а щелчок по совпадению покажет блок исходного кода, содержащий совпадение.
SCSE знает лексическую структуру каждого языка, который он проиндексировал, с точностью, как компилятор этого языка. (Он использует внешние интерфейсы из семейства процессоров точного языка программирования; это семейство довольно большое и включает в себя целевой язык OP - Python / Perl / Java / ...). Таким образом, он точно знает, где находятся идентификаторы, комментарии и литералы (целые, плавающие, символьные или строковые), и точно их содержимое.
SCSE-запросы состоят из команд, представляющих последовательности интересующих языковых элементов. Запрос
'for' ... I '=' N=103
находит ключевое слово для рядом с ("...") произвольным идентификатором (I), который инициализируется ("=") с числовым значением ("N"), равным 103. Поскольку SCSE понимает языковая структура, он игнорирует языковые пробелы между токенами, например, он может найти это независимо от пробелов, пробелов, новых строк или комментариев.
Маркеры запроса I, N, F, S, C представляют I (средство для чистки), Natural (число), F (loat), S (tring) и C (omment) соответственно. Таким образом, первоначальный вопрос ОП о поиске всех чисел с плавающей точкой является почти тривиальным запросом
F
Аналогично для поиска всех строковых литералов ("S") и целых литералов ("N"). Если вы хотите найти только копии значений рядом с пи, добавьте ограничения для нижней и верхней границ:
F>3.14<3.16
(Довольно забавно запускать это на больших кодах Фортрана; вы видите все виды неправильных приближений числа Пи).
SCSE не найдет число с плавающей точкой в комментарии или строке, потому что оно знает разницу. Написание выражения в стиле grep для обработки всех странных комбинаций с целью устранения пробелов или окружающих кавычек и разделительных комментариев должно быть намного более болезненным. Grep не способ сделать это.