能分析以下幾類語句,並建立符號表及生成中間代碼(三地址指令和 四元式形式):
能夠識別出測試用例中的語義錯誤,包括
能准確給出錯誤所在位置。輸出的錯誤提示信息格式如下: Semantic error at Line [行號]:[說明文字]
要求:給出如下語言成分所對應的語義動作
要求:分為系統概要設計和系統詳細設計。
核心數據結構的設計
該結構為語法分析樹的節點,用於存放單詞的內容、屬性、深度和子節點信息。
支持返回所有類中的所有實例。在返回屬性信息時,如果該節點不具備該屬性,會進行報錯。
子節點信息和屬性信息可以進行增加。
該結構為四元組,用於存放四元組內容。
同時對四元組的分析操作也包含在內
要求:對如下內容展開描述。
該系統沒有辦法處理未經聲明就使用的變量。因為在存儲變量的屬性時,使用了字典,在調用變量時,如果該變量未經聲明,那麼符號表中就沒有它,也就沒有關於它的字典的 key,那麼程序會進行 keyerror 報錯。
測試樣例如下:
struct student {
int age;
}
int sum(int x, int y) {
int ret;
ret = x + y;
return ret;
}
int main() {
float a;
a = 1.567;
int b;
int[5][5] c;
c[1][1] = 10;
b = c[1][1];
int d;
int *e;
d = sum(b, c[1][1]);
if(d > 10) {
a = 1.0;
} else {
a = 2.0;
}
while(b < 10) {
d = d + 1;
b = b + 1;
}
return 0;
}