在Eclipse開發過程中,JDT返回給客戶端的AST有多常見?他們有時會以什麼方式破碎?AST有多常見?
我想象的明顯的東西像失蹤進口,但也有在代碼編譯的情況下,但JDT-AST仍然是斷開的,或者是這個AST也輸入到實際的編譯器?
在Eclipse開發過程中,JDT返回給客戶端的AST有多常見?他們有時會以什麼方式破碎?AST有多常見?
我想象的明顯的東西像失蹤進口,但也有在代碼編譯的情況下,但JDT-AST仍然是斷開的,或者是這個AST也輸入到實際的編譯器?
如果代碼有編譯錯誤,JDT的API返回的AST將會有'畸形節點'。 如果代碼編譯,那麼AST應該完全符合代碼。有可能有錯誤,但這個區域測試相當好。
任何線索在錯誤的節點導致錯誤檢測中出現誤報之前,代碼可能變得多麼糟糕?意思是說你的代碼有時會在奇怪的地方突然變紅,因爲在代碼的另一部分中有些東西很糟糕?這是否只發生在缺少進口和錯誤包圍的情況下,還有其他情況嗎? – kutschkem
語法錯誤會混淆編譯器,例如在輸入代碼時不完整的陳述。 –
你對「破」的定義是什麼?空指針指向樹?某些節點具有空的子節點?某些節點不是有效的Java節點?樹代表的程序的語法是非法的?語法是合法的,但範圍之外有變量?根據編譯器該程序是錯誤的?該計劃是合法的,但運行時會爆炸或掛起? FWIW,大多數優秀的解析器(我假設JDT有一個)將從句法合法來源構建語法合法的AST,但不檢查語言語義;這是超越解析的一步。我認爲JDT也會進行語義檢查。 –
這裏的語法和語義究竟意味着什麼,例如根據您的定義或語法鍵入正確性語義? – kutschkem
語法應該很清楚:程序由不違反BNF語法的元素組成。語義是語言定義所強加的其餘約束(「你不能在一個不可見的範圍內使用標識符」)。 –