Вопрос

Мне нужно проанализировать структуру документов PHP и JavaScript, чтобы получить информацию о функциях документа и их параметрах, классах и их методах, переменных и так далее...Мне интересно, есть ли какое-либо решение для этого (без регулярных выражений)...Я слышал о чем-то под названием "lexing", однако я не смог найти никаких примеров, даже тех, которые могли бы мне сказать, это то, что я ищу, или нет...

заранее благодарю

Это было полезно?

Решение

Под "Лексированием" вы имеете в виду лексический анализ, и есть некоторые древние инструменты, которые в основном все еще работают, под названием Lex и Yacc.Lex создает токенизатор, а Yacc расшифровывается как "еще один компилятор compiler" и является фактическим анализатором.

Концепция lex / Yacc заключается в том, что вы создаете грамматику для языка, а затем запускаете грамматику с помощью инструмента paslex для генерации исходного кода (обычно на C), который вы можете использовать для анализа файла и выполнения действий с определенными ключевыми словами и токенами.Мартин Вальденбург написал версию lex / yacc на языке pascal под названием PasLex, которая существует уже более десяти лет и была преобразована в Дельфы (хотя это может не работать с последними версиями без некоторой незначительной доработки).Если я правильно помню, он использует то же самое .L входные файлы грамматики представлены как lex, поэтому любая документация, которую вы найдете для lex / yacc, также может быть применена к paslex, за исключением того, что на выходе вы получаете код pascal.

Я не уверен в наличии текущей документации.До появления интернета (вздох) мы пользовались книгами, и большая часть этого была подробно задокументирована на бумаге, которая давно пожелтела ... однако ходят слухи, что вы могли бы ... просто могли бы приобрести подержанный экземпляр на Amazon.Я заскрежетал зубами по этому поводу , используя книгу , которая также известна как "книга о драконе" которая, судя по всему, была переиздана совсем недавно, в 2006 году.


Редактировать:

Я ошибся инструментом, это был ТПЛЫ.PasLex был реализацией грамматики delphi...TPLY был инструментом Lex / Yacc, который генерировал исходный код pascal из файла .L.

Другие советы

Я не уверен, что это возможно, но для PHP вы могли бы вызвать PHP CLI из Delphi для получения информации?

Если это так, вы можете вызвать token_get_all () , а затем выдать результат в то, что вы можете проанализировать в Delphi (может быть, XML, JSON и т. Д.). Это лексизм. Проблема в том, что это только половина решаемой проблемы - вам все равно нужно понимать каждый токен в контексте, чтобы получить желаемые результаты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top