유효한 C 프로그램에 대한 보고서를 작성하는 데 유용한 언어는 무엇입니까? [닫기]

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가 사용하는 파일에 대한 자세한 내용은

다른 팁

c태그, 아마도?

Ctags는 소스 파일에서 발견된 언어 개체의 인덱스(또는 태그) 파일을 생성하여 이러한 항목을 텍스트 편집기나 기타 유틸리티로 빠르고 쉽게 찾을 수 있도록 합니다.태그는 색인 항목을 사용할 수 있는 언어 객체(또는 해당 객체에 대해 생성된 색인 항목)를 나타냅니다.

당신은 큰 벌레 캔을 열고 있습니다. 이것은 시간을 효과적으로 사용하지 않습니다. 어쩌고 저쩌고 등등.

답변으로 넘어가서, 사소한 분석 이상의 내용을 이야기하고 정확성이 필요한 경우 C 소스 코드를 구문 분석해야 합니다.어떤 언어로든 그렇게 할 수 있지만 거의 확실히 고급 문법에서 파서를 생성하고 싶을 것입니다.이를 위한 도구는 얼마든지 있습니다.현대적이고 특히 강력한 파서 생성기는 다음과 같습니다. ANTLR;작업하기 쉬운 하위 집합을 포함하여 C에 대한 여러 가지 ANTLR 문법이 있습니다.

스크립팅 언어를 살펴보세요.저는 Python이나 Perl을 추천합니다.

Haskell에는 비교적 최근의 언어-C 프로젝트가 있습니다. http://www.sivity.net/projects/언어.c C 코드를 분석할 수 있게 해줍니다.

Haskell에 익숙하다면 한 번 살펴볼 가치가 있을 것입니다.그렇지 않더라도 한번 가보는 것도 흥미로울 수 있습니다.

그것이 당신이 원하는 프로그래밍 언어라면 문자열 처리 능력으로 알려진 언어를 말하겠습니다. 즉 Perl을 의미합니다.

그러나 필요한 작업은 언어를 '알고' 있어야 하기 때문에 다소 복잡할 수 있으므로 컴파일러가 수행하는 것과 동일한 단계를 따라야 합니다. 즉, 언어에 대한 어휘 및 문법 분석(Flex, yacc 등)을 수행해야 합니다. 해당 문자열의 의미가 무엇인지 진정으로 '알아'야 합니다.

아마도 가장 좋은 출발점은 doxygen을 살펴보고 거기에서 수행된 작업을 최대한 많이 재사용하는 것입니다.

Lex/yacc는 파서 구축에 적합합니다.

파이파서 순수 Python으로 작성된 ANSI C89/C90용 완전한 파서입니다.다양한 요구에 맞게 C 소스 코드를 분석하는 데 널리 사용되고 있습니다.파일의 모든 함수 정의 나열 등과 같은 몇 가지 예제 코드가 함께 제공됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top