分析程式的任務是從由掃描程式產生的記號中確定程式的語法結構,以及或隱式或顯式地構造出表示該結構的分析樹或語法樹。
基本介紹
- 中文名:編譯分析過程
- 任務:確定程式的語法結構
- 依據:由掃描程式產生的記號中
- 依賴:語言特定的語法結構
結構,錯誤的處理,
結構
語法樹的結構在很大程度上依賴於語言特定的語法結構。這種樹通常被定義為動態數據結構,該結構中的每個節點都由一個記錄組成,而這個記錄的域包括了編譯後面過程所需的特性(即:並不是那些由分析程式計算的特性)。節點結構通常是節省空間的各種記錄。特性域還可以是在需要時動態分配的結構,它就像一個更進一步節省空間的工具。
錯誤的處理
在分析程式中有一個比在掃描程式中更為複雜的問題,這就是對於錯誤的處理。在掃描程式中,如果遇到的一個字元是不正規記號的一部分,那么它只需生成一個出錯記號並消耗掉這個討厭的字元即可(在某種意義上,通過生成一個出錯記號,掃描程式就克服了發生在分析程式上的困難)。但對於分析程式而言,它必須不僅報告一個出錯信息,而且還須從錯誤狀態恢復(recover)並繼續進行分析(去找到儘可能多的錯誤)。分析程式有時會執行錯誤修復(error repair),此時它從提交給它的非正確的版本中推斷出一個可能正確的代碼版本(這通常是在簡單情況下才發生的)。錯誤恢復的一個尤為重要的方面是有意義的錯誤信息報告以及在儘可能接近真正錯誤時繼續分析下去。