Парсер кода ColdFusion?

Я пытаюсь создать приложение для поиска кодовой базы ColdFusion моей компании. Я хотел бы иметь возможность выполнять интеллектуальный поиск, например: найти, где определена функция (и не нажимать везде, где вызывается функция). Для этого мне нужно проанализировать код ColdFusion, чтобы определить такие вещи, как объявления функций, вызовы функций, запросы к базе данных и т. Д.

Я изучал использование lex и yacc, но я никогда не использовал их раньше, и кривая обучения кажется очень крутой. Я надеюсь, что уже есть что-то, что я мог бы использовать. Мой другой вариант - путаница сложного в обслуживании кода регулярных выражений-спагетти, которого я хочу избежать.

3 ответа

Решение

Я использовал исходный код для CFEclipse, так как он с открытым исходным кодом и имеет парсер. Не уверен насчет законности этого, если бы мы продавали / распространяли его, но мы используем его только для внутреннего инструмента.

Написание синтаксических анализаторов для реальных языков обычно затруднительно, потому что они содержат конструкции, которые Lex и Yacc часто не обрабатывают хорошо, например, язык не является LALR(1). ColdFusion может быть проще, чем некоторые из-за его XML-подобного стиля.

Если вы хотите быстро создать сложный синтаксический анализатор, вы можете рассмотреть возможность использования нашего DMS Software Reengineering Toolkit, который поддерживает GLR-анализ.

Если вы хотите избежать написания собственных или взлома всех этих регулярных выражений, вы можете рассмотреть нашу поисковую систему исходного кода. Он имеет чувствительные к языку парсеры и может очень быстро выполнять поиск по очень большим базам исходного кода. Одним из его "чувствительных к языку" синтаксических анализаторов является AdhocText, который предназначен для работы с "универсальными" языками программирования, такими как те, которые вы можете найти в случайной книге программирования; он даже понимает XML-подобные теги, такие как ColdFusion. Вы можете скачать ознакомительную версию по ссылке, чтобы попробовать его.

РЕДАКТИРОВАНИЕ 3/3/2010: недавняя функция, добавленная в SCSE - это возможность помечать определения и использовать отдельно. Это отвечало бы желанию ОП найти определение функции, а не все вызовы.

Ни один не существовал. Поскольку ColdFusion больше похож на скрипты, чем на код, я думаю, что для него будет сложно написать парсер.

ColdFusion Builder может анализировать CFM/CFC для контура в Eclipse. Может быть, вы можете исследовать, может ли плагин CF Builder делать то, что вы хотите.

Другие вопросы по тегам