유효한 C 프로그램에 대한 보고서를 작성하는 데 유용한 언어는 무엇입니까? [닫기]
문제
누구든지 주어진 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 소스 코드를 분석하는 데 널리 사용되고 있습니다.파일의 모든 함수 정의 나열 등과 같은 몇 가지 예제 코드가 함께 제공됩니다.