編譯原理第七章——語義分析和中間程式碼的產生
1、知識點圖
重點記憶:
說明語句的翻譯
程式語言中的說明語句都是給編譯程式提供資訊的,諸如型別、維數、每維的界種類等,因此一般不生成目標,只是在編譯時把有關資訊填入相應表格即可。
賦值語句的翻譯
1.簡單算術表示式的賦值語句:
所謂簡單指不考慮陣列元素、記錄、函式的引用等情況。
控制流語句的翻譯
可以仿照算術表示式的翻譯來進行。
例如 A∨B∧C=D可翻譯成如下四元式序列:
(=,C,D,T1)
(∧,B,T1,T2)
(∨,A,T2,T3)
但是對於控制語句中的條件表示式,我們還必須結合控制語句作進一步的分析。
過程呼叫的翻譯
1. 過程呼叫主要解決兩個問題:
(1)把程式控制轉移到子程式(過程段),執行完畢再返回。這個問題很好解決。
(2)傳遞實在引數。我們前面談到過幾種不同的引數傳遞方式(傳名、傳值、傳地址),它們的語義動作也就有所區別。
2、驗證使用(習題處理):
3、課堂感受:
相關推薦
編譯原理第七章-語義分析和中間程式碼產生
語義分析的任務是:1.審查每一個語法結構的靜態語義,即驗證語法正確的結構是否有意義。2.在語義正確的基礎上生成一種中間程式碼或目的碼。語義分析的範圍是:1.確定型別:確定識別符號所關聯的資料型別。2.型別檢查:按語言的型別規則,檢查運算的合法性與運算分量型別的一致性,必要時作
編譯原理第七章——語義分析和中間程式碼的產生
1、知識點圖重點記憶:說明語句的翻譯 程式語言中的說明語句都是給編譯程式提供資訊的,諸如型別、維數、每維的界種類等,因此一般不生成目標,只是在編譯時把有關資訊填入相應表格即可。賦值語句的翻譯 1.簡單算術表示式的賦值語句: 所謂簡單指不考慮陣列元素、記錄、函
第七章 語義分析和中間程式碼生成
1、 編譯程式的任務是把源語言程式翻譯成目標程式,有些編譯程式在編譯過程中,不產生中間語言,而是直接從源語言程式翻譯成目標語言程式。 以上編譯過程省略了中間語言,它不利於編譯所產生的目的碼的優
第七章:語義分析和中間程式碼的產生
一.語義分析概述1.語義分析的任務 1)審查每一個語法結構的靜態語義,即驗證語法正確的結構是否有意義。如:賦值語句:x:=x+y,左邊變數型別與右邊變數型別是否一致。2)在語義正確的基礎上生成一種中間程式碼或目的碼。2.語義分析的範圍1)確定型別:確定識別符號所關聯的資料型別
編譯原理 第三章 詞法分析(上)
3.1.1 為什麼編譯器要把詞法分析和語法分析分開 3.1.2 詞法單元、模式和詞素(重要) 例: 3.1.3 詞法單元的屬性(重要) 詞法單元的屬性是用來記錄相對應的詞素的一些相關屬性資訊。 例: int x = 10 + 20
編譯原理 第三章 詞法分析(下)
3.6 有窮自動機(非常重要) 3.6.1 不確定的有窮自動機(重要) 例: 狀態0是開始狀態, 在狀態0上輸入符號b會進入狀態0,輸入a可能進去狀態0也有可能進入狀態1。所以對於狀態0來說一個確定的輸入符號a他有兩種離開狀態,這就是一種不確定的狀態。 &nbs
編譯原理第四章-語法分析
語法分析的知識要點 1)最左推導 總是選擇每個句型的最左非終結符進行替換; 根據輸入流中的下一個終結符,選擇最左非終結符的一個候選式; 自頂向下的語法分析採用最左推導方式。 2)非終結符的後繼符號集 可能在某個句型中緊跟在A後邊的終結符a的集合,記為FOLLOW
編譯原理 第六章 屬性文法和語法制導翻譯
一、知識總結 首先學習了屬性文法,屬性文法是在上下文無關文法的基礎上為每個文法符號(終結符或非終結符)配備若干個相關的“值”,稱為“屬性”。屬性分為綜合屬性和繼承屬性。綜合屬性用於“自下而上”傳遞資訊,在語法樹中,一個結點的綜合屬性的值,由其子結點的屬性值確定。
編譯原理第四章—語法分析
第四章1、知識點圖重點記憶:語法分析器功能:語法分析的工作: 判斷一個輸入串是否符合語法規則如何判斷? 從文法的起始符出發進行句子的推導,即自上而下的分析從句子本身出發,進行歸約,看能否把句子規約為到起始符,即自下而上的規約分析的結果:構造一棵語法樹自
編譯原理——第七章
第七章 語義分析和中間程式碼的產生知識總結一、中間語言1、語法樹 語法樹,有向非迴圈圖和字尾式表示源程式的自然層次結構2、字尾式中 綴式: a:=b*-c+b*-c字尾式: a b c - * b c - * + =3、三地址程式碼表示一般形式 x:=
編譯原理 第五章 語法分析----自下而上分析
一、知識總結 自下而上分析是從輸入串開始,逐步進行規約,直至規約到文法的開始符號,就是一種“移進-規約”法。自上而下分析的中心問題是怎樣判斷棧訂單符號串的可歸約性以及如何規約。解決方案是規範規約。所謂規範規約就是每一步都把控制代碼換成它對應的產生式
編譯原理----第四章 語法分析(自上而下分析)
一、感受及總結 語法分析是編譯過程的核心部分,語言的語法結構是用上下文無關描述的。因為自上而下分析可能會存在兩大問題,左遞迴和回溯,所以產生了消除左遞迴和克服回溯的方法----LL(1)分析法。使用LL(1)分析法要涉及FIRST集和FOLLOW集,這是重點。當
編譯原理第六章-屬性文法和語法制導翻譯
第六章主要講了屬性文法、語義規則、基於屬性文法的處理、S屬性的自下而上計算、L-屬性文法的自頂向下翻譯等內容。一些基本的概念:屬性文法:是在上下文無關文法的基礎上為每個文法符號(終結符或非終結符)配備若干個相關的“值”(稱為屬性)。屬性:代表與文法符號相關的資訊,
編譯原理-第四章 語法分析-4.4 自頂向下的語法分析
自頂向下的語法分析 一、自頂向下語法分析 1.定義 2.不足 不能處理左遞迴 不能處理複雜的回溯技術 3.例 4.演算法構造 FIRST FOLLOW LL(1)文法 二、預測分析 1.遞迴下降的預測分析 遞迴下降預測分析器
現代編譯原理——第四章:語義分析以及原始碼
轉自: http://www.cnblogs.com/BlackWalnut/p/4527845.html 寫完語義分析的程式碼後感覺語義分析只是為了進行型別檢測(後來才發現,這只是語義分析的一部分)。詞法分析注重的是每個單詞是否合法,以及這個單詞屬於語言中的哪些部分。語法分析的上下文無關
現代編譯原理——第1章:詞法分析
轉自: http://www.cnblogs.com/BlackWalnut/p/4467749.html 當我們寫好一份原始碼,提交給編譯器的時候,這是編譯器對我們提交程式碼進行詞法分析。這個整個編譯過程的第一步。詞法分析器將我們的提交的程式碼看作是一個文字,它工作的目的就是將這個文字中
《利用python進行資料分析.第三版》 第七章 資料清洗和準備
7.1 處理缺失資料 缺失資料在pandas中呈現的方式有些不完美,但對於大多數使用者可以保證功能正常。對於數值資料,pandas使用浮點值NaN(Not a Number)表示缺失資料。我們稱其為哨兵值,可以方便的檢測出來。 處理缺失資料有以下幾個方
編譯原理第三章筆記--詞法分析
3.1對詞法分析器的要求一、單詞符號語言中具有獨立意義的最小的語法符號單詞的種類: 基本字 if...else這種 識別符號 起名來表示變數名、函式名 常數 運算子 界符 ; {} () , 這種二、單詞的表示形式
第十章-語義分析之類型檢查
編譯 表達式 第十章 階段 靜態 實現 循環 由於 靜態類型 由於Java是靜態類型的語言,所以在編譯階段,所有的變量都能得出確定的類型。 1、類型循環繼承、循環引用 Java是單繼承的,也就是說Java只能繼承一個實現類。但是在繼承過程中可能會形成循環,接口也是。
無線與行動網路_計算機網路原理第七章_自考本科段
概要:計算機網路原理第七章無線與行動網路知識點小結 1、無線網路 識記:無線鏈路特徵;無線網路基本結構;無線網路模式; (1)無線鏈路特徵:通過無線鏈路連線到基站,不同無線鏈路技術傳輸速率和傳輸距離不同。 (2)無線網路基本結構:無線主機、無線鏈路、基站、網路基礎設施 (3)無線