0
我試圖設計一個小型編譯器作爲練習的一種形式。我還沒有讀到中間代碼優化或任何有關優化。編譯器設計 - 計算常量值
到目前爲止,我有一個描述語法的FLEX/BISON文件,我的表達式工作正常。在這樣做的時候,我認爲我應該像一個常量表達式,並且重複所有加法和乘法表達式來表示它們的常量等值,並在解析它們時計算它們的值。
所以我想知道這是否是正確的做法?或者我應該讓代碼優化(當我讀到他們)處理這樣的東西?
我試圖設計一個小型編譯器作爲練習的一種形式。我還沒有讀到中間代碼優化或任何有關優化。編譯器設計 - 計算常量值
到目前爲止,我有一個描述語法的FLEX/BISON文件,我的表達式工作正常。在這樣做的時候,我認爲我應該像一個常量表達式,並且重複所有加法和乘法表達式來表示它們的常量等值,並在解析它們時計算它們的值。
所以我想知道這是否是正確的做法?或者我應該讓代碼優化(當我讀到他們)處理這樣的東西?
您可以在代碼優化期間做得更好。例如,3 + a + 39
可優化爲a + 42
(對於無符號整數算術,無論如何),但在解析過程中檢測並不容易。
更有趣的恆定摺疊是您的流量分析檢測到變量具有已知恆定值的結果。這在解析過程中確實很難做到。
因此,總的來說,最好讓解析器解析並在語義分析期間和之後執行優化。