Не с открытым исходным кодом, но выполняет именно то, что запрашивает OP: наш Клиентский интерфейс JavaScript .
Этот интерфейс основан на нашем DMS Software Reengineering Toolkit , который представляет собой настраиваемую технологию компиляции общего назначения, полезную для построения произвольных анализаторов кода и преобразователей. DMS имеет много внешних интерфейсов, доступных для многих языков (COBOL, Java, C ++, ...)
В частности, синтаксические анализаторы на основе DMS (включая JavaScript) собирают полную информацию для восстановления исходного дерева, включая информацию о начале и конце столбцов для токенов, количество числовых литералов, различия в соглашениях о цитировании строк и т. Д. включите его, чтобы сделать печать верности, где никакие преобразования не были применены. DMS также предоставляет множество других полезных сервисов для обработки дерева, таких как посетители, поддержка построения таблицы символов, поддержка анализа потока, сопоставление с образцом, а также преобразования от источника к источнику.
Он может предоставлять все эти услуги, потому что стоимость его разработки амортизируется во многих, многих языках и приложениях.
Мы сделали это, потому что, как сказал Даниил, «возможности безграничны». Он приводит пример инструментирования кода для отслеживания сбоев во время выполнения; этот вид инструментовки является очень полезной идеей, и мы создаем инструменты покрытия тестами, основанные именно на этой мысли.