日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编译原理 符号表管理技术

發布時間:2024/3/24 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译原理 符号表管理技术 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第六章 符號表管理技術

文章目錄

  • 第六章 符號表管理技術
    • 6.1 概述
    • 6.2 符號表的組織與內容
      • 6.2.1 符號表的結果與內容
      • 6.2.2 符號表的組織方式
    • 6.3 非分程序結構語言的符號表組織
    • 6.4 分程序結構語言的符號表組織

6.1 概述

符號表:在編譯過程中,編譯程序用來記錄源程序中各種名字的特性信息,所以也稱為名字特性表。

名字:程序名、過程名、函數名、用戶定義類型名、變量名、常量名、枚舉值名、標號名等。

特性信息:上述名字的種類、類型、維數、參數個數及目標地址(存儲單元地址)等。

符號表在編譯過程中的作用:

源程序中變量要先聲明,然后才能引用。

聲明語句中,聲明各種名字,給出類型維數等信息,編譯時將這些信息登錄到符號表中,并給變量分配存儲單元,存儲單元地址也登錄在符號表中。

當編譯到引用所聲明的變量(賦值或引用其值)時,要進行語法語義正確性檢查生成相應的目標程序,需要查符號表以取得相關信息。

有關符號表的操作:填表和查表

填表:說明或定義語句中的名字、與之有關的信息填入符號表中。

查表:

  • 填表前查表,檢查同一作用域內名字是否重復定義

  • 檢查名字種類是否與說明一致

  • 強類型語言中,表達式中各變量的類型是否一致

    強類型語言是一種強制類型定義的語言,一旦某一個變量被定義類型,如果不經過強制轉換,則它永遠就是該數據類型了,強類型語言包括Java、.net 、Python、C++等語言。

  • 生成目標指令時,要去的所需要的地址

6.2 符號表的組織與內容

6.2.1 符號表的結果與內容

“名字”域:存放名字。一般為標識符的符號串,也可為指向標識符字符串的指針。

“特性”域:可包括多個子域,分別表示標識符的有關信息。如:

  • 名字(標識符)的種類:簡單變量、函數、過程、數組、標號、參數等

  • 類型:如整型、浮點型、字符型、指針等

  • 性質:變量形參、值形參

    形參:全稱為“形式參數”,是在定義函數名和函數體的時候使用的參數,目的是用來接收調用該函數時傳遞的參數。

    形參的作用是實現主調函數與被調函數之間的聯系,通常將函數所處理的數據,影響函數功能的因素或者函數處理的結果作為形參。

  • 值:常量名所代表的數值

  • 地址:變量所分配單元的首址或地址位移

  • 大小:所占的字節數

  • 作用域的嵌套層次

不同的種類存入的信息也是不同的。

數組:維數、上下界值、計算下標量地址所用的信息、數組元素類型等

記錄(結構、聯合):域的個數,每個域名、地址位移、類型等

過程或函數:形參個數、所在層次、函數返回值類型、局部變量所占空間大小等

指針:所指對象類型等

6.2.2 符號表的組織方式

1.統一符號表:不論什么名字都填入統一格式的符號表中

符號表表項應按信息量最大的名字設計。填表、查表比較方便,結構簡單,但浪費大量空間

2.不同種類的名字分別建立各種符號表

節省空間,但是填表和查表不方便。

3.折中辦法:大部分共同信息組成統一格式的符號表。特殊信息另設附表,兩者用指針連接。

6.3 非分程序結構語言的符號表組織

非分程序的結構語言:每個可獨立進行編譯的程序單元時一個不包含有子模塊的單一模塊。如FORTRAN語言。

主程序與子程序通過公共區交流

標識符的作用域

全局:子程序名、函數名和公共區名

局部:程序單元中定義的變量

符號表的組織

基本處理辦法

  • 子程序、函數名和公共區變量填入全局符號表

  • 在子程序(函數)聲明部分讀到標識符時,構造局部符號表

  • 在語句部分讀到標識符,查表。

  • 程序單元結束:釋放該程序單元的局部符號表。

  • 程序執行完成:釋放全部符號表

  • 符號表的組織方式

    1.無序符號表:按掃描順序建表,查表要逐項查找。查表操作平均長度:(n+1)/2

    2.有序符號表:符號表按變量名進行字典式排序。線性查表同上,折半查表:log2n?1log_2n-1log2?n?1

    3.散列符號表(Hash表),但需要解決沖突問題

    6.4 分程序結構語言的符號表組織

    (1)分程序的結構語言:模塊內可嵌入子模塊

    (2)標識符的作用域和基本處理方法

    作用域:標識符局部于所定義的模塊(最小模塊)

    • 模塊中所定義標識符的作用域是定義該標識符的子程序

    • 過程或函數說明中定義的標識符(包括形參),其作用域為本過程體

    • 循環語句中定義的標識符,其作用域為該循環語句

      不能從循環體外轉到循環體內,循環語句應看作一層。

    基本處理辦法

    建查符號表均要遵循標識符作用域規定進行。

    建表;不能重復,不能遺漏。

    查表:按標識符作用域查找。

    處理方法

    假設標識符是先聲明后引用(標號例外,要特殊處理)

    即聲明時插入,查看有無同名。引用時查找,通過轉到直接外層的方法查看是否聲明,并提取信息。

    處理方法:預先將標準標識符填入名字表中,因為他們是全程量,所以應填入最外層。

    分程序表結構

    分程序的符號表形成順序是2,4,3,1。該次序是閉分程序的次序(END出現的次序)

    按先進后出的順序掃描其中各個分程序,可設一個臨時工作棧

    每當進入一層分程序時,就在棧頂預造該分程序的符號表,當遇到該層分程序的結束符(END)時,此時該分程序的全部登記項已位于棧頂,再將該分程序的全部登記項移至正式符號表中。

    當過程和函數體編譯完成后,應將與之對應的參數名和局部變量名以及后者的特性信息從符號表中刪去

    總結

    以上是生活随笔為你收集整理的编译原理 符号表管理技术的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 伊人网av| 少妇高潮大叫好爽喷水 | 国产日韩欧美亚洲 | 嫩草影院永久入口 | 中文字幕在线2018 | 国产毛片一区二区三区va在线 | 在线观看日批 | 一级免费a| 每日在线观看av | 老司机成人免费视频 | av资源免费看 | 中文字幕乱妇无码av在线 | 欧美xxxxx高潮喷水麻豆 | 亚洲一区二区三 | av一级 | 黄色午夜影院 | 人人爽人人香蕉 | 亚洲の无码国产の无码步美 | 狠狠干天天 | 黄色三级a | 九九天堂网 | 97爱视频 | 亚洲色图欧美日韩 | 91在线公开视频 | 韩国三级做爰视频 | 日韩视频一区二区 | 韩国三级视频在线观看 | 8x8x国产精品一区二区 | 香蕉成人在线视频 | 锕锕锕锕锕锕锕锕 | 亚洲欧洲在线播放 | 精品动漫一区二区三区 | 九九热视频这里只有精品 | 色播综合 | 亚洲国产精品女人久久久 | 在线观看欧美一区二区三区 | 国产中文一区二区 | 久久久情| 日本热久久 | 亚洲视屏在线观看 | 精品无码一区二区三区蜜臀 | 日韩精品www | 三点尽露的大尺度国产 | 法国极品成人h版 | 一区二区三区伦理片 | 日韩欧美毛片 | 亚洲精品日韩在线观看 | 四虎精品一区二区三区 | 超碰人人插 | 亚洲a精品 | 一本久久综合亚洲鲁鲁五月天 | 91精品国产综合久久久蜜臀图片 | 亚洲高清在线看 | 亚洲女人天堂网 | 伊人久久免费视频 | 91看黄| 中文字幕看片 | 精品亚洲天堂 | 亚洲福利一区二区 | 99精品久久 | 91精品久久久久 | 精品无码国产一区二区三区av | www.色网 | 久久偷看各类wc女厕嘘嘘偷窃 | 欧美图片一区 | 超薄肉色丝袜一区二区 | 亚洲 欧美 中文字幕 | 国产不卡视频一区二区三区 | 国产日韩精品一区二区三区在线 | 极品探花在线播放 | 国产精品久久久久久久久久免费看 | 成年人av在线播放 | 北条麻妃一区二区三区在线观看 | 欧美日韩一区二区在线观看视频 | 北条麻妃一区二区三区四区五区 | 国产丰满美女做爰 | 人人澡超碰碰 | 久久精品国产亚洲AV成人雅虎 | 91免费.| 在线a视频| 日韩精品一 | 草的我好爽 | 亚洲精品中文字幕在线播放 | 中文字幕在线免费看线人 | 丰满人妻av一区二区三区 | av片一区二区 | 亚洲视频在线观看免费视频 | jizz一区 | 久久伊人精品 | 本站只有精品 | 国产三级久久久 | 少妇媚药按摩中文字幕 | 亚洲国产视频在线观看 | 国产伦精品视频一区二区三区 | v片在线观看| 欧美一区二区三区在线播放 | 青青草在线免费 | 久久久久激情 | 国产乱国产乱老熟 |