編譯符號表的作用
A. 在編譯過程中,組織的符號表是必須唯一的嗎
習題一、單項選擇題 1、將編譯程序分成若干個「遍」是為了 。 a.提高程序的執行效率 b.使程序的結構更加清晰 c.利用有限的機器內存並提高機器的執行效率 d.利用有限的機器內存但降低了機器的執行效率 2、構造編譯程序應掌握 。 a.源程序b.目...
B. 編譯器的組成及各部分的功能及作用
1. 詞法分析 詞法分析器根據詞法規則識別出源程序中的各個記號(token),每個記號代表一類單詞(lexeme)。源程序中常見的記號可以歸為幾大類:關鍵字、標識符、字面量和特殊符號。詞法分析器的輸入是源程序,輸出是識別的記號流。詞法分析器的任務是把源文件的字元流轉換成記號流。本質上它查看連續的字元然後把它們識別為「單詞」。 2. 語法分析 語法分析器根據語法規則識別出記號流中的結構(短語、句子),並構造一棵能夠正確反映該結構的語法樹。 3. 語義分析 語義分析器根據語義規則對語法樹中的語法單元進行靜態語義檢查,如果類型檢查和轉換等,其目的在於保證語法正確的結構在語義上也是合法的。 4. 中間代碼生成 中間代碼生成器根據語義分析器的輸出生成中間代碼。中間代碼可以有若干種形式,它們的共同特徵是與具體機器無關。最常用的一種中間代碼是三地址碼,它的一種實現方式是四元式。三地址碼的優點是便於閱讀、便於優化。 5. 中間代碼優化 優化是編譯器的一個重要組成部分,由於編譯器將源程序翻譯成中間代碼的工作是機械的、按固定模式進行的,因此,生成的中間代碼往往在時間和空間上有很大浪費。當需要生成高效目標代碼時,就必須進行優化。 6. 目標代碼生成 目標代碼生成是編譯器的最後一個階段。在生成目標代碼時要考慮以下幾個問題:計算機的系統結構、指令系統、寄存器的分配以及內存的組織等。編譯器生成的目標程序代碼可以有多種形式:匯編語言、可重定位二進制代碼、內存形式。 7 符號表管理 符號表的作用是記錄源程序中符號的必要信息,並加以合理組織,從而在編譯器的各個階段能對它們進行快速、准確的查找和操作。符號表中的某些內容甚至要保留到程序的運行階段。 8 出錯處理用戶編寫的源程序中往往會有一些錯誤,可分為靜態錯誤和動態錯誤兩類。所謂動態錯誤,是指源程序中的邏輯錯誤,它們發生在程序運行的時候,也被稱作動態語義錯誤,如變數取值為零時作為除數,數組元素引用時下標出界等。靜態錯誤又可分為語法錯誤和靜態語義錯誤。語法錯誤是指有關語言結構上的錯誤,如單詞拼寫錯、表達式中缺少操作數、begin和end不匹配等。靜態語義錯誤是指分析源程序時可以發現的語言意義上的錯誤,如加法的兩個操作數中一個是整型變數名,而另一個是數組名等。
C. 陳火旺編譯原理什麼是符號表 符號表有哪些重要作用
符號表在編譯程序工作的過程中需要不斷收集、記錄和使用源程序中一些語法符號的類型和特徵等相關信息。這些信息一般以表格形式存儲於系統中。如常數表、變數名表、數組名表、過程名表、標號表等等,統稱為符號表。對於符號表組織、構造和管理方...
D. 符號表和抽象語法樹是什麼關系兩者在編譯器設計中是否必需
一般的編譯器可能包含下面這些模塊:
1, 詞法分析器:
輸入: 源代碼
輸出: token
2, 語法分析器:
輸入: token
輸出: AST
在這個過程中, 可以識別出不符合語法規則的語句, 就可以報syntax錯誤, 如果有syntax錯誤, 編譯結束
3, 語義分析器:
輸入: AST
輸出: 無
在這個過程中, 根據語言的語義規則來識別語義錯誤, 要識別語義錯誤 就必須編譯AST, 因為是樹的遍歷, 假如你先遍歷到了int a 這個節點, 接著又遍歷到了一個表達式a = 4這個節點, 你需要檢查變數a有沒有聲明啊, 變數a和4的類型批不匹配呢? 這時你如果沒有保存變數a的信息, 那麼你怎麼檢查? 所以就需要符號表來保存這些信息了.
4, 代碼優化:
最簡單的就是常量折疊優化了, 比如: a = 1 + 2 這個語句可以直接換成: a = 3了, 也就是說在編譯階段就把一些必要的運算先計算完成, 在程序運行的時候就不需要計算這些了, 就提高了程序的運行效率. 這部分是最復雜的了, 還有各種各樣各樣的優化
5, 代碼生成:
輸入: AST
輸出: 可以是虛擬機代碼, 可以是本地匯編代碼
E. 西門子200PLC編程軟體中符號表的注釋為什麼有些是1有些是空白求解謝謝!和符號表的作用是什麼啊
符號表實際上是對地址的一個說明或注釋,可以簡單明了看懂梯形圖。注釋是空的,只有編輯過才能有。
F. 西門子S7-300/400PLC的編程軟體中,符號表的用處,和其導出導入的功能的作用。
符號表的用途在於給IO變數或數據定義一個名稱,方便在編寫程序及閱讀程序的時候理解其含義。比如I0.0,定義為P0101_RUN,注釋為提升泵運行信號,可以按自己熟悉的命名格式。其導入導出可以用EXCEL或其他工具快速定義符號。
變數表是用來監控相應變數在線狀態的,可以根據不同的調試要求,生成多個變數表。變數表是不會下載到PLC裡面的。
舉個最簡單的例子吧,控制一個閥門打開及關閉,有幾個條件:I0.0 集中,I0.1打開,I0.2關閉,I0.3開到位,I0.4關到位,I0.5故障(比如過力距),Q0.0打開輸出,Q0.1關閉輸出。
(6)編譯符號表的作用擴展閱讀:
美國汽車工業生產技術要求的發展促進了PLC的產生,20世紀60年代,美國通用汽車公司在對工廠生產線調整時,發現繼電器、接觸器控制系統修改難、體積大、雜訊大、維護不方便以及可靠性差,於是提出了著名的「通用十條」招標指標。
1969年,美國數字化設備公司研製出第一台可編程式控制制器(PDP-14),在通用汽車公司的生產線上試用後,效果顯著;
1971年,日本研製出第一台可編程式控制制器(DCS-8);1973年,德國研製出第一台可編程式控制制器;1974年,我國開始研製可編程式控制制器:1977年,我國在工業應用領域推廣PLC。
最初的目的是替代機械開關裝置(繼電模塊)。然而,自從1968年以來,PLC的功能逐漸代替了繼電器控制板,現代PLC具有更多的功能。其用途從單一過程式控制制延伸到整個製造系統的控制和監測。
G. c++編譯中的符號表是什麼東西
符號表是庫中所有函數,變數的總稱,用於連接過程.