2012-08-11 2 views
0

내 질문은입니다. 컴파일러는 어떤 단계에서 이름을 lookup으로 수행합니까? 필자는 의미 론적 분석을 수행 할 때가 될 것이라고 생각하지만 컴파일러 분석을 검색 할 때이 단계 (어휘, 구문, 의미)에서 이름 검색을 언급하지 않았으므로 확실히하고 싶습니다.C++ 코드 변환 및 이름 조회

답변

2

C++에서 이름 조회는 일반적으로 구문 분석에 영향을주는 형식 이름 또는 템플릿 이름 인 경우 구문 분석 (구문 분석)의 일부로 수행해야합니다. typenames 또는 템플릿 이름을 사용하지 않고 구문 분석 할 수있는 정도까지는 나중에 이름 조회가 지연 될 수 있지만 이는 일반적으로 구현 세부 사항입니다.

2

일반적으로 의미 론적 분석이지만 C++에서는 단계가 모두 얽혀 있기 때문에 다른 사람이 다른 말을하면 이해할 수 있습니다.

0

C/C++에서는 구문 요소의 종류 (유형, 변수 등)를 알지 못해도 구문 요소의 의미를 결정할 수없는 경우가 있습니다. 대부분의 C++ 컴파일러는 생성 된 문법 (yacc, bison)을 사용하여 구문 트리를 작성하므로 이름 조회가 그 다음에 와야합니다.

A * B;

이것은 A 형 변수 B의 선언이거나 인수 A 및 B에 대한 연산자 *를 호출하는 명령문입니다.