2014-04-09 2 views
1

C#에서 C/C++ 구문을 분석하고 & 시각화를 위해 깔끔한 AST를 구해야합니다. 내 방법은 현재 : C++로 작성된 C + + 파서 (손으로 쓰거나 파서 생성기로 생성)를 찾아서이 데이터를 JSON 또는 이와 유사한 것으로 저장하고 C#으로 전환하고 JSON 라이브러리를 사용하여 데이터를 C# 객체로 읽으면 쉽게 분석 할 수 있습니다.C#에서 C++ 코드 구문 분석 및 분석 #

나 같은 것을 허용하는 프로젝트가 있습니까? 기본적으로 코드 파일에 list of members뿐만 아니라 완전한 AST를 원합니다. C++로 작성된 C++ 파서로 시작하거나 C# 코드를 생성 할 수있는 파서 생성기가 있고 누군가 C++로 이미 완성 된 경우 가장 유용 할 것입니다.

+2

[clang] (http://clang.llvm.org/) 및 [LLVM] (http://llvm.org/)에 대해 알고 계신가요? –

+0

도서관 추천을 요청하는 질문은 주제와 관련이 없습니다. 당신은 다른 곳에서 이것을 게시해야합니다. –

+1

@David - 주제가 * 무엇입니까? 조만간 오류 메시지에 대해 묻는 질문은 * 프로그래밍 문제의 절반을 포함하는 주제 *가 될 것입니다. –

답변

3

ANTLR과 같은 파서 생성기를 사용하여 입력 문자열을 구문 분석하고 AST를 얻을 수 있습니다.

ANTLR은 버전 3이 NHibernate와 ASP.NET MVC에서 사용되는 .NET 버전을 가지고 있습니다. 프로젝트에 런타임 라이브러리에 대한 참조가 이미있을 수도 있지만 latest version, 4를 사용하는 것이 좋습니다.

아마도 다운로드에 원하는 특정 C 또는 C++ 버전의 구문 파일이 포함되어 있지 않습니다. 따라서 적절한 구문 파일을 찾아야합니다. ANTLR은 오랫동안 사용되어 왔으며 많은 구문 파일을 사용할 수 있습니다.

Github의 ANTLR 작성자가 관리하는 여러 언어에 대해 list of grammars을 찾을 수 있습니다. 이 목록에는 C11의 문법이 포함되어 있습니다.

+0

좋은 답변이지만 처음부터 새로 만들었습니다. http://www.nobugs.org/developer/parsingcpp/ –

+4

기성품 라이브러리 및 구문 파일 "처음부터 구축"을 사용하는 방법은 무엇입니까? –