2011-01-19 5 views
7

clang에 새 키워드를 추가하려면 어떻게해야합니까? 새 키워드는 함수 한정자 여야합니다. 선언 부분은 어디에 있습니까?clang에 메인 키워드로 취급되는 키워드를 어떻게 추가 할 수 있습니까?

감사합니다.

+0

clang/LLVM에 대한 구문 분석 및 렉싱 (lexing) 섹션을 작성해야 할 것 같아서 clang 메일 링리스트에서 도움을 받으실 수 있습니다. – Necrolis

+0

IdentifierTabe.cpp를 편집하고 추가했습니다. 멀리에서 구문 분석 및 lexing TokenKinds.def 새 키워드를 C에서 main의 동작을 찾을 수 없습니다 어디에 내가 정의 된 모르겠어요. –

+0

[Clang 대 Elsa의 단점 중 하나] (http://clang.llvm.org/comparison.html#elsa)는 Elsa가 문법 규칙에 기반한 멋진 파서를 사용한다는 것입니다. 나는 항상 Clang 개발자들이 파서를 같은 방식으로 쓰지 않기로 결정한 이유에 대해 항상 궁금해했다 ... – peoro

답변

7

/clang/Basic/TokenKinds.def를 포함하도록 추가 한 다음 ParseDeclarationSpecifiers (...)에 새 사례를 추가해야합니다.

아마 더 쉬운 옵션은 새로운 속성을 정의하는 것, 그리고 반면에, 당신은 오류가 발생하기 쉬운 될 수있는 AST,이 한정자 지원을 추가해야 할 것 그렇지 않으면

#define your_new_qualifier __attribute__((your_new_attribute))

를 사용 속성은 동일한 함수의 다양한 선언에 걸쳐 자동으로 전달됩니다.

+0

어디에서 동작을 정의합니까? 코드 옆에 어떤 동작이 구현되는지에 대한 문서가 있습니까? –

+1

Clang의 특정 측면에 대한 문서는 보지 못했지만 유사한 내용을 복사하여 붙여 넣기는 매우 쉽습니다. 귀하의 경우 '인라인'구현 (예 : AST) 또는 두 번째 옵션의 주소 공간 특성 –

+1

우리가해야 할 파일에서 #define_new_qualifier __attribute __ ((your_new_attribute)) 및 "your_new_attribute"를 추가 할 위치 –

관련 문제