編譯原理學習筆記 10 1語義分析的概念

2021-10-10 22:11:27 字數 854 閱讀 2476

前言

更新中。。。

跳過目錄

假定:語法成分翻譯動作子程式引數設定:

1、上下文有關分析: 即識別符號的作用域

2、型別的一致性檢查

3、語義處理:

語義處理的任務:按某種操作的目標結構生成中間**或目標**。

begin begin … begin α int i β i end … i … end

…begin

αint i

β iend

… i …

end例如,對於有巢狀子程式結構的程式段:

用上下文無關文法只能描述語言的語法結構,而不

能描述其語義!此時最好採用上下文相關文法進行描述。

若存在文法規則: var ::= i 則

begin … begin α int i β var end … i … end

此時內層子程式可歸約為

begin … … i … end

begin … δ var … end δ∈ v*且不包含變數 i 的宣告

∴ 文法規則應改為: int i β var ::= int i β i

第一次i的歸約正確

第二次i的歸約錯誤

上下文相關文法5

然而上下文有關文法不僅構造困難,而且其分析

器十分複雜,分析效率又低,顯然不實用。

處理這種上下文有關問題的一般方法,使用專門

的語義動作來補充上下文無關分析器的動作,即借助

語義分析來解決。

通常我們把與語義相關的上下文有關資訊填入符

號表中,並通過查符號表中的這些資訊來分析程式的

語義是否正確。6

編譯原理學習筆記 自上而下分析

語法分析 自上而下分析 面臨的問題 左遞迴性問題 例如 p pa 如果存在非終結符p含有左遞迴的文法將上述自上而下的分析過程陷入無限迴圈 回溯?ll 0 分析法 左遞迴的消除p p 改寫為p p p p 消除左遞迴的做法 把文法g的所有非終結符按人一種順序排列成p1,p2 pn,按此順序執行 for...

編譯原理語義分析 編譯原理 語義分析和符號表

本文使用 zhihu on vscode 創作並發布經過詞法分析 語法分析之後,源程式形式上和結構上的正確性基本得到了保證。然而,僅有形式上的正確性,並不能保證源程式就是完全正確的,還要檢查源程式的含義是否正確。諸如符號的使用是否得當,表示式的型別是否相容等,完成這些功能的編譯階段稱為語義分析。語義...

編譯原理學習筆記 語法

高階程式語言可分為 1.強制性語言 2.作用時語言 3.基於規則的語言 4.物件導向的語言 程式語言主要由語法,語義,語用 語用 有關程式設計和語言成分的使用方法,它使語言的基本概念與外界的語言 如數學概念或計算機的物件和操作 聯絡起來。語法 語法是指這樣的一組規則,用它可以形成和產生乙個合式的程式...