2012-02-16 3 views

답변

2

기존 ANTLR 문법을 기반으로 AST를 생성하는 데 ANTLR을 사용하고 얻을하는 것이 아니라 쉬운 할 수있다 , 예. the source. }하지만 C 코드의 많은 실제 방언에 대한 강력한 파서를 제공합니다 : - http://www.antlr.org/api/Java/index.html

+3

C 파서를 빌드 할 수 있습니다. 확실히 ANTLR은 좁은 의미에서 훌륭한 파서를 만듭니다. 그러나 OP가 원하는 것은 실제 C 프로그램을 읽는 것으로 보입니다. 전 처리기, 방언 (C89, C99, C11, ...), 공급 업체 변수 (GCC, MSVC, GreenHills), 문자 집합 등이 생각보다 훨씬 자세합니다. 당신은 스스로를 다시 발명하려고 시도하는 것보다 이미 모든 것을하는 사람을 얻는 것이 더 낫습니다. –

-1

우리 C Front End 파이썬에서 확실히, 자바 없습니다되지 않습니다 :

ANTLR 여기에 자바 API가 있습니다. 그것은 단지 AST를 만드는 것을 넘어선 것입니다. 전처리 기, 기호 테이블, 로컬 및 글로벌 플로우 분석을 제공하며, "AST가있는"것 이외의 C 언어를 수행하려는 경우 필요합니다.

구문 분석 및 흐름 분석을위한 인프라를 제공하고 패턴을 사용하여 AST에 변환을 적용하며 유효한 소스 코드를 다시 생성 할 수있는 DMS Software Reengineering Toolkit 위에 구축됩니다.

2015 년 7 월 (주석에 대한 응답으로) 편집 : DMS 자체는 병렬 프로그래밍 언어 PARLANSE로 구현됩니다. PARLANSE는 C와 유사하지만 예외 처리뿐만 아니라 미세 입자 병렬 구조를 포함합니다. DMS는 언어 처리를 정의 할 수있는 DSL 세트를 제공합니다 : 완전한 유니 코드 가능 렉서, 문법에 대한 BNF, 트리 형태의 분석을위한 속성 문법, 패턴 인식 및 소스 코드 재 작성에 유용한 소스 - 소스 변환.

+0

이것은 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. –

+0

@TonyHopkinson : "* C 소스 코드 파서를 찾고 *"의 어떤 부분이 직접 대답하지 않습니까? 이 답변의 비평은 어디에서 할 수 있습니까? –

+1

나에게 친구를 찾았습니다. 가이는 또한 자바를 요청했고, 당신은 그것이 무엇으로 만들어 졌는지 말하지 않았다. 우리 안에 지어졌다. 또한 나의 눈에는 다소 우울했다. 그것이 나 였다면 나는 당신이 코멘트를보고 싶어 할지도 모르는 것에 따라 이것을했을 것이다. 추신 : 나는 downvote을하지 않았다 ... –

2

프로젝트에는 Java로 작성된 C 파서가 있습니다. 비슷한 질문으로 answer을 참조하십시오.