1. 程式人生 > >編譯原理——動態語義錯誤與靜態語義錯誤

編譯原理——動態語義錯誤與靜態語義錯誤

產生 是個 font 編譯原理 編譯器 原理 sin 直接 語義

  動態語義錯誤: 邏輯上的錯誤,比如死循環等,編譯器在編譯的時候並未發現,但邏輯上這是個錯誤;

  靜態語義錯誤: 可被編譯器發現的語法錯誤,比如 (5+6(); 這種在編譯器編譯的時候就會被發現的語法錯誤;

  

#include<iostream>

using namespace std;

int main() {
    
    int k = 0;
    for(; k<=100; );
    {
            k++;
    }
}

  如上述代碼中,for 循環後面有個;號, 所以這個for循環是死循環,存在語義錯誤,在編譯的時候是不會報錯的,所以是動態語義錯誤。在C/C++中,直接寫{ }用於產生獨立的作用域,編譯可以通過,符合詞法、語法、靜態語義。

編譯原理——動態語義錯誤與靜態語義錯誤