Парсинг имен функций из источника PHP с использованием PHP регулярных выражений? - PullRequest
0 голосов
/ 16 сентября 2011

Я использую ctags в Linux для создания тегов для исходного кода с использованием vim и плагина Tlist. Текущий синтаксический анализ функции ctags для PHP ужасен, поэтому я скачал исходники для ctags и собираюсь изменить регулярное выражение, которое анализирует функции.

Поскольку я имею дело с большим количеством кода, функции которого объявлены различными способами, мне нужно регулярное выражение для надежного синтаксического анализа имен функций.

Есть ли у вас один, которым вы могли бы поделиться, который анализирует имя функции php из строки исходного кода?

Это исправленный и «улучшенный» текущий источник ctags, который пропускает многие функции, особенно те, которые отмечены как final или static вначале.

(^[ \t]*)(public[ \t]+|protected[ \t]+|private[ \t]+)?(static[ \t]+)?function[ \t]+&?[ \t]*([" ALPHA "_][" ALNUM "_]*)

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Будет ли просто добавление статических и финальных значений к возможному списку слов, которые нужно игнорировать, и приведение его в соответствие более чем одному ключевому слову, которое будет достаточно близко?

(^[ \t]*)((public|protected|private|static|final)[ \t]*)*function[ \t]+&?[ \t]*([" ALPHA "_][" ALNUM "_]*)

Это означало бы, что он будет принимать нежелательные сообщения как 'public public static static final bogus ()', но проверка синтаксиса php отклонит его, и, следовательно, не должна быть серьезной проблемой.

0 голосов
/ 16 сентября 2011
s/^.*\sfunction\s([^\(]*)\(.*$/\1/i 

я проверил это с некоторой сед

grep -Ri function *| head -10 | sed 's/^.*\sfunction\s\([^\(]*\)(.*$/\1/i'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...