Какой язык полезен для создания отчета для действительной программы на языке Си [закрыто]

StackOverflow https://stackoverflow.com/questions/85230

  •  01-07-2019
  •  | 
  •  

Вопрос

Кто-нибудь может предложить мне полезный язык программирования, который можно использовать для создания инструмента, который проанализирует данную программу на C и сгенерирует отчет txt или html, содержащий информацию о данной программе (список функций, список переменных и т.д.).Программа, которую я намерен создать, похожа на doxygen, но я хочу использовать ее для личного пользования.

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

Решение

И Python, и Perl обладают отличными возможностями обработки строк.

Я бы предложил использовать что-то вроде ctags для синтаксического анализа программы и просто создать скрипт для чтения файла ctags и вывода в формате txt / html.

Формат файла, используемый ctags, четко определен, так что другие программы могут его прочитать.Видишь http://ctags.sourceforge.net для получения дополнительной информации о самом ctags и файле, который он использует.

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

ctags ( теги ), возможно?

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

Вы открываете большую банку с червями, это неэффективное использование вашего времени, бла-бла-бла и т.д.

Переходя к ответу, если вы говорите о чем-то, выходящем за рамки тривиального анализа, и вам нужна точность, вам нужно будет проанализировать исходный код C.Вы можете сделать это на любом языке, но вы почти наверняка захотите сгенерировать свой синтаксический анализатор на основе высокоуровневой грамматики.Для этого существует множество инструментов.Современный и особенно мощный генератор синтаксических анализаторов - это ANTLR;существует ряд грамматик ANTLR для C, включая более простые в работе подмножества.

Изучите языки сценариев.Я бы порекомендовал Python или Perl.

У Haskell есть относительно недавний языковой проект-c http://www.sivity.net/projects/language.c который позволяет анализировать код на языке Си.

Если вы знакомы с Haskell, то, возможно, на это стоит взглянуть.Даже если это не так, было бы интересно попробовать.

Если вам нужен язык программирования, то я бы сказал что-то, что известно мощностью обработки строк, так что это означало бы perl.

Однако требуемая вам задача может быть довольно сложной, поскольку вам нужно "знать" язык, поэтому вам потребуется выполнить те же шаги, что и компилятор, включая лексический и грамматический анализ языка (думаю, flex, думаю, yacc), чтобы действительно "знать", какое значение имеют эти строки.

Возможно, лучшая отправная точка - взглянуть на doxygen и попытаться повторно использовать как можно больше проделанной там работы

Lex / yacc подходят для построения синтаксических анализаторов.

pycparser - анализатор это полноценный парсер для ANSI C89 / C90, написанный на чистом Python.Он широко используется для анализа исходного кода языка Си для различных нужд.Он поставляется с некоторым примером кода, таким как перечисление всех определений функций в файлах и т.д.

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