2012-08-11 114 views
0

我的問題是:編譯器在什麼階段執行名稱lookup。我認爲它可能是在執行語義分析時,但我只想確定,因爲當我搜索編譯器分析時,他們沒有提到任何階段(詞法,語法,語義)中的名稱查找。C++代碼翻譯和名稱查詢

回答

2

在C++中,名稱查找通常需要作爲語法分析(解析)的一部分完成,因爲名稱是類型名稱或模板名稱,會影響語法。如果事情可以獨立於類型名稱或模板名稱進行解析,則名稱查找可能會延遲到稍後,但通常這是一個實現細節。

2

這是一般的語義分析,但在C++中,這些階段都是交織在一起的,所以如果有人說別的話,這是可以理解的。

0

在C/C++中,有時您無法確定語法元素的語義含義,而無需知道其類型(類型,變量等)。大多數C++編譯器使用生成的語法(yacc,bison)來構建語法樹,因此名稱查找必須在此之後。

請考慮以下內容:

A * B;

這是A *類型的變量B的聲明,或者是對它的參數A和B調用operator *的語句。