freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

符號表的組織與管理-wenkub

2023-04-02 01:24:24 本頁面
 

【正文】 的名字。 ?首先要確定其被分配的區(qū)域 。 //定義整型數(shù)組 A,重定義沖突 編譯過程首先在符號表中記錄了標(biāo)識符 A 的屬性是 2 3個整型元素的數(shù)組; 而后在分析第二、第三這兩個定義說明時編譯系統(tǒng)可通過符號表檢查出標(biāo)識符 A 的二次重定義沖突錯誤。 通過符號表中屬性記錄可進(jìn)行相應(yīng)上下文的語義檢查。 float w。 6 幾乎在編譯程序工作的全過程中,都需要對符號表進(jìn)行頻繁地訪問 (查表或填表 ),其耗費的時間在整個編譯過程中占有很大的比例。 ,符號表的作用和地位是完全一致的。 采用分表結(jié)構(gòu)適合哪種語言的編譯系統(tǒng)。 符號表總體結(jié)構(gòu)的設(shè)計和實現(xiàn)是與源語言的復(fù)雜性(包括詞法結(jié)構(gòu)、語法結(jié)構(gòu)的復(fù)雜性)有關(guān),還與對于編譯系統(tǒng)在時間效率和空間效率方面的要求有關(guān)。 符號表的建立和查找 1 【學(xué)習(xí)目標(biāo)】 符號表作為編譯系統(tǒng)的重要設(shè)施,貫穿于文法分析、檢查和語義處理的編譯全過程。第六章 符號表 167。 本章目的使學(xué)生深刻全面地了解符號表的地位和作用; 掌握符號表的組織和管理方法;以及編譯過程中符號表的操作活動過程。 3 【難重點】 ?符號表總體組織的選擇原則。 4 167。 5 根據(jù)編譯程序工作階段的不同劃分,名字表中的各種信息將在編譯程序工作過程中的適當(dāng)時候填入。 因此, 合理地組織符號表并相應(yīng)選擇好的查、填表方法是提高編譯程序工作效率的有效辦法。 則在符號表中收集到關(guān)于符號 x 的屬性是一個整型變量, y 是一個具有 10 個元素的整型數(shù)組, 關(guān)于符號 w 的屬性是浮點型簡單變量。 10 例如,在一個 C 語言程序中出現(xiàn) int A[2][3]。 本例還可以看到不論在后二句中 A 的其它屬性與前一句是否完全相同,只要標(biāo)識符名重定義,就將產(chǎn)生重定義沖突的語義錯誤。 例如,在 C 語言中首先要確定該符號變量是分配在公共區(qū)( extern)、文件靜態(tài)區(qū)( extern static)、函數(shù)靜態(tài)區(qū)(函數(shù)中 static)、還是函數(shù)運行時的動態(tài)區(qū)( auto)等。 每個標(biāo)識符通常由若干個字符(非空格字符)組成的字符串來表達(dá)。 通常把一個標(biāo)識符在符號表中的位置的整數(shù)值稱之謂該 標(biāo)識符的內(nèi)部代碼 。 在一些允許操作重載 (operator over load)的語言中,函數(shù)名、過程名是可以重名的,對于這類重載的標(biāo)識符要通過它們的參數(shù)個數(shù)和類型以及函數(shù)返回值類型來區(qū)別,以達(dá)到它們在符號表中的唯一性。 變量符號的類型屬性決定了該變量的數(shù)據(jù)在存儲空間的存儲格式,還決定了在該變量上可以施加的運算操作。作為存儲變量地址的指針類型所指向的變量同樣可以是基本數(shù)據(jù)類型,也可以是其它任何一種組合式數(shù)據(jù)類型。 18 符號的存儲類別 大多數(shù)語言對變量的存儲類別定義采用二種方式。 例如在 C 語言中,在函數(shù)體外缺省存儲類關(guān)鍵字所定義的變量是外部變量,即程序的公共存儲變量,而在函數(shù)體內(nèi)缺省存儲類關(guān)鍵字所定義的變量是內(nèi)部變量,即屬于該函數(shù)所獨有的私有存儲變量(通常是動態(tài)分配的存儲變量)。 20 符號的作用域及可視性 一個符號變量在程序中起作用的范圍,稱謂它的作用域。與局部量不同的是,這些內(nèi)部靜態(tài)量在其作用域之外,仍然保持存在。符號表屬性中除了需要符號的存儲類別之外還需要表示該符號在程序結(jié)構(gòu)上被定義的層次。 在 C 語言程序中函數(shù)之間是并列定義的,因此每個函數(shù)內(nèi)部都定義為第一層,而函數(shù)內(nèi)的分程序也可以是并列定義的,對于并列定義的分程序當(dāng)然具有相同的層次號。 局部即在該定義范圍之外此變量已經(jīng)沒存在的必要。 ② 記錄結(jié)構(gòu)型的成員信息 一個記錄結(jié)構(gòu)型的變量,在存儲分配時所占空間大小要由它的全體組成成員來確定,另外對于記錄結(jié)構(gòu)型變量還需要有它所屬成員排列次序的屬性信息。有關(guān)函數(shù)及過程的形參屬性信息用來作調(diào)用過程的匹配處理和語義檢查。 符號表的組織 語言中不同種類的符號,它們的屬性信息種類不完全相同,而不同的程度也是不一樣的,如語言關(guān)鍵字(保留詞)的屬性與變量符號屬性信息相差太大,而變量符號的屬性信息與函數(shù)或過程的屬性也有相當(dāng)大的差別,但對于像不同變量之間(如簡單變量與數(shù)組或記錄結(jié)構(gòu)之間)的屬性信息差別相對就小一些。 30 S T U D E N T G R A N D A G E …N ame Informatron………… …753間接組織方式的符號表 31 把屬性種類完全相同的那些符號組織在一起,構(gòu)造出表項是分別為等長的多個符號表。 else c = 0。 ?僅記錄信息存放地址 如果符號表的名字不分種屬。 相對地址:存儲單元的相對地址。 如果將信息與名字一起全部放在符號表中,則因維數(shù)不同而使記錄該信息的空間大小不易確定, 因此,通常給它們另外安排一個內(nèi)情向量表來記錄數(shù)組的全部信息,同時在符號表的信息欄設(shè)置一指針指向內(nèi)情向量的入口地址。 但這樣組織的主要缺點是一個編譯程序?qū)⑼瑫r管理若干個符號表,增加了總體管理的工作量和復(fù)雜度。 由于分程序的嵌套導(dǎo)致名字作用域的嵌套,故有時也將允許名字作用域嵌套的語言稱為具有分程序結(jié)構(gòu)的語言。 { //第二層分程序 int c。 { //第四層分程序 float d。 而當(dāng)編譯程序掃描到一個分程序的結(jié)束時,編譯程序釋放為該分程序所建立的符號表。 一直到查到為止。 為了實現(xiàn)分程序構(gòu)造中標(biāo)識符的作用域和可視性規(guī)則的要求。 46 ? 首先, 為了標(biāo)志一個符號所屬的分程序?qū)哟?,在符號表中可設(shè)立一個屬性域用來登錄符號所在分程序的層次 。 退出一個分程序時, 不但要把表示分程序?qū)哟蔚臓顟B(tài)量降低一層,而且需要把符號表中,所有在退出的分程序中登錄的符號項清除。 符號表的建立和查找 52 1.線性符號表 符號表中最簡單且最容易實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)是線性表, 它是 按程序中標(biāo)識符出現(xiàn)的先后次序建立的符號表 ,編譯程序不做任何整理次序的工作。 53 例如有一程序中出現(xiàn)符號的情況如下: ………………… …a…………… //第一次出現(xiàn) a的地方 …………b…… //第一次出現(xiàn)
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1