編譯原理詞語
Ⅰ 編譯原理-句型、句子、短語、直接短語、句柄、素短語、最左素短語
在進行語法分析的時候,有時候會對這些詞語的概念不清晰,這里我們就詳細歸納總結一下。
可以看出這個裡面,最需要理解的概念就是短語,其他大部分概念都是在短語基礎上延伸的,從概念上可以看出:
假設有一個文法
針對文法的一個特定句型 (Sd(T)db) , 其推導過程如下:
這個句型 (Sd(T)db) 對應的 CFG 分析樹如下:
那個這個句型 (Sd(T)db) 有多少個短語呢?
還記得短語的定義么, S ⇒* αβδ , αβδ 代表句型就是這里的 (Sd(T)db) 。
因此這個句型 (Sd(T)db) :
演算法非常簡單,就是通過分析樹的後序遍歷,先將子樹的葉節點從左到右排合並成字元串(即一個短語),然後用它代表子樹的根節點的值,再和與子樹根節點同一層節點值合並,得到新的短語。就這樣從分析樹的最底層,一路合並到分析樹的根節點,就能得到所有的短語了。
通過遞歸的方法,獲取短語列表 phraseList , 直接短語列表 directPhraseList 和 素短語列表 plainPhraseList 。
運行結果:
Ⅱ 請問規范規約是什麼意思(這個詞應該是用在計算機編譯原理中)
在編譯原理中,規范規約是編譯程序中語法分析(自下而上分析)階段的,在此階段中處理文法和句子。規范規約是文法中句子的一個最右推導的逆過程。
如果你是沒學過編譯原理的,這個具體要說意思的話,太抽象。你只要知道編譯程序的工作是從輸入源程序開始到輸出目標程序為止的整個過程,而這個過程可分為五個階段:詞法分析、語法分析、語義分析與中間代碼產生、優化、目標代碼生成。規范規約就是語法分析中用到的,為後面的步驟做准備。
Ⅲ 編譯原理全部的名詞解釋
書上有別那麼懶!.
編譯過程的六個階段:詞法分析,語法分析,語義分析,中間代碼生成,代碼優化,目標代碼生成
解釋程序:把某種語言的源程序轉換成等價的另一種語言程序——目標語言程序,然後再執行目標程序.解釋方式是接受某高級語言的一個語句輸入,進行解釋並控制計算機執行,馬上得到這句的執行結果,然後再接受下一句.
編譯程序:就是指這樣一種程序,通過它能夠將用高級語言編寫的源程序轉換成與之在邏輯上等價的低級語言形式的目標程序(機器語言程序或匯編語言程序).
解釋程序和編譯程序的根本區別:是否生成目標代碼
句子的二義性(這里的二義性是指語法結構上的.):文法G[S]的一個句子如果能找到兩種不同的最左推導(或最右推導),或者存在兩棵不同的語法樹,則稱這個句子是二義性的.
文法的二義性:一個文法如果包含二義性的句子,則這個文法是二義文法,否則是無二義文法.
LL(1)的含義:(LL(1)文法是無二義的; LL(1)文法不含左遞歸)
第1個L:從左到右掃描輸入串 第2個L:生成的是最左推導
1 :向右看1個輸入符號便可決定選擇哪個產生式
某些非LL(1)文法到LL(1)文法的等價變換: 1. 提取公因子 2. 消除左遞歸
文法符號的屬性:單詞的含義,即與文法符號相關的一些信息.如,類型、值、存儲地址等.
一個屬性文法(attribute grammar)是一個三元組A=(G, V, F)
G:上下文無關文法.
V:屬性的有窮集.每個屬性與文法的一個終結符或非終結符相連.屬性與變數一樣,可以進行計算和傳遞.
F:關於屬性的斷言或謂詞(一組屬性的計算規則)的有窮集.斷言或語義規則與一個產生式相聯,只引用該產生式左端或右端的終結符或非終結符相聯的屬性.
綜合屬性:若產生式左部的單非終結符A的屬性值由右部各非終結符的屬性值決定,則A的屬性稱為綜合屬
繼承屬性:若產生式右部符號B的屬性值是根據左部非終結符的屬性值或者右部其它符號的屬性值決定的,則B的屬性為繼承屬性.
(1)非終結符既可有綜合屬性也可有繼承屬性,但文法開始符號沒有繼承屬性.
(2) 終結符只有綜合屬性,沒有繼承屬性,它們由詞法程序提供.
在計算時: 綜合屬性沿屬性語法樹向上傳遞;繼承屬性沿屬性語法樹向下傳遞.
語法制導翻譯:是指在語法分析過程中,完成附加在所使用的產生式上的語義規則描述的動作.
語法制導翻譯實現:對單詞符號串進行語法分析,構造語法分析樹,然後根據需要構造屬性依賴圖,遍歷語法樹並在語法樹的各結點處按語義規則進行計算.
中間代碼(中間語言)
1、是復雜性介於源程序語言和機器語言的一種表示形式.
2、一般,快速編譯程序直接生成目標代碼.
3、為了使編譯程序結構在邏輯上更為簡單明確,常採用中間代碼,這樣可以將與機器相關的某些實現細節置於代碼生成階段仔細處理,並且可以在中間代碼一級進行優化工作,使得代碼優化比較容易實現.
何謂中間代碼:源程序的一種內部表示,不依賴目標機的結構,易於代碼的機械生成.
為何要轉換成中間代碼:(1)邏輯結構清楚;利於不同目標機上實現同一種語言.
(2)便於移植,便於修改,便於進行與機器無關的優化.
中間代碼的幾種形式:逆波蘭記號 ,三元式和樹形表示 ,四元式
符號表的一般形式:一張符號表的的組成包括兩項,即名字欄和信息欄.
信息欄包含許多子欄和標志位,用來記錄相應名字和種種不同屬性,名字欄也稱主欄.主欄的內容稱為關鍵字(key word).
符號表的功能:(1)收集符號屬性 (2) 上下文語義的合法性檢查的依據: 檢查標識符屬性在上下文中的一致性和合法性.(3)作為目標代碼生成階段地址分配的依據
符號的主要屬性及作用:
1. 符號名 2. 符號的類型 (整型、實型、字元串型等))3. 符號的存儲類別(公共、私有)
4. 符號的作用域及可視性 (全局、局部) 5. 符號變數的存儲分配信息 (靜態存儲區、動態存儲區)
存儲分配方案策略:靜態存儲分配;動態存儲分配:棧式、 堆式.
靜態存儲分配
1、基本策略
在編譯時就安排好目標程序運行時的全部數據空間,並能確定每個數據項的單元地址.
2、適用的分配對象:子程序的目標代碼段;全局數據目標(全局變數)
3、靜態存儲分配的要求:不允許遞歸調用,不含有可變數組.
FORTRAN程序是段結構,不允許遞歸,數據名大小、性質固定. 是典型的靜態分配
動態存儲分配
1、如果一個程序設計語言允許遞歸過程、可變數組或允許用戶自由申請和釋放空間,那麼,就需要採用動態存儲管理技術.
2、兩種動態存儲分配方式:棧式,堆式
棧式動態存儲分配
分配策略:將整個程序的數據空間設計為一個棧.
【例】在具有遞歸結構的語言程序中,每當調用一個過程時,它所需的數據空間就分配在棧頂,每當過程工作結束時就釋放這部分空間.
過程所需的數據空間包括兩部分
一部分是生存期在本過程這次活動中的數據對象.如局部變數、參數單元、臨時變數等;
另一部分則是用以管理過程活動的記錄信息(連接數據).
活動記錄(AR)
一個過程的一次執行所需要的信息使用一個連續的存儲區來管理,這個區 (塊)叫做一個活動記錄.
構成
1、臨時工作單元;2、局部變數;3、機器狀態信息;4、存取鏈;
5、控制鏈;6、實參;7、返回地址
什麼是代碼優化
所謂優化,就是對代碼進行等價變換,使得變換後的代碼運行結果與變換前代碼運行結果相同,而運行速度加快或佔用存儲空間減少.
優化原則:等價原則:經過優化後不應改變程序運行的結果.
有效原則:使優化後所產生的目標代碼運行時間較短,佔用的存儲空間較小.
合算原則:以盡可能低的代價取得較好的優化效果.
常見的優化技術
(1) 刪除多餘運算(刪除公共子表達式) (2) 代碼外提 +刪除歸納變數+ (3)強度削弱; (4)變換循環控制條件 (5)合並已知量與復寫傳播 (6)刪除無用賦值
基本塊定義
程序中只有一個入口和一個出口的一段順序執行的語句序列,稱為程序的一個基本塊.
給我分數啊.
Ⅳ 常見的計算機英語專業詞彙
常見的計算機英語專業詞彙
作為計算機相關專業學生,面試或者筆試時不可避免地會遇到與專業相關的'問題,而考核專業問題的時候,又不可避免地涉及到很多專業詞彙,這就需要求職者掌握好常見的專業詞彙,才能在闡述問題時得心應手,避免出現表達錯誤引起誤解。以下是計算機專業常見相關詞彙。
計算機導論 Introction to Computer Science
高等數學 Advanced Mathematics
應用創造學 Creativity Methodology
工程圖學與計算機繪圖 Engineering Graphics and Computer Graphics Drawings
面向對象程序設計 Object-oriented Programming
概率論與數理統計 Probability Theory and Statistics
離散數學 Discrete Mathematics
軟體工程概論 Introction to Software Engineering
數據結構 Data Structures
計算機組成與結構 Computer Organization and Architecture
操作系統 Operating System
計算機網路 Computer Network
演算法設計與分析 Algorithm Design and Analysis
軟體工程經濟學 Software Engineering Economics
Java技術 Java Technology
UML建模 UML Modeling (Unified Modeling Language Modeling)
資料庫系統概論 Introction to Database Systems
編譯原理 Principle of Compiler
軟體體系結構 Software Architecture
程序分析 Program Analysis
軟體過程與項目管理 Software Process and Project Management
系統分析與設計 System Analysis and Design
程序測試 Program Testing
模式識別 Pattern Recognition
嵌入式程序設計 Embedded Programming
人機交互技術 Human-computer Interaction Technology
雲計算 Cloud Computing
計算機與網路安全 Computer and Network Security
計算機圖形學 Computer Graphics
數據挖掘技術 Data Mining Technology
分布對象技術 Distributed Object Technology
網路多媒體 Internet Multimedia
網路程序設計 Network Programming
.NET程序設計 . NET Programming Design
協議工程 Protocol Engineering
5.4.2 操作系統相關術語
虛擬機 Virtual Machine
訪問控制列表 Access Control List
線程 Thread
多線程 Multithreading
進程 Process
守護進程 Daemon
進程間通信 IPC (Interprocess Communication)
死鎖 Deadlock
銀行家演算法 Banker’s algorithm
內存管理 Memory management
虛擬地址 Virtual address
物理地址 Physical address
引導盤 Boot Disk
頁面失效 Page Fault
後台進程/前台進程 Background Process /Foreground Process
文件傳送協議 FTP (File Transfer Protocol)
圖形用戶界面 GUI (Graphical User Interface)
許可權 Permission
移植 Port/Ported/Porting
可移植系統介面 Portable Operating System Interface
分時 Time-sharing
工作區 Workspace
工作目錄 Working Directory
窗口管理器 Window Manager
封裝器 Wrapper
5.4.3 演算法相關術語
字典 Dictionaries
堆 Heap
優先順序隊列 Priority queue
矩陣乘法 Matrix multiplication
貪心演算法 Greedy algorithm
上界/下界 Upper bound / Lower bound
最好情況/最壞情況/平均情況 Best case /Worst Case/ Average case
插入排序 Insertion sort
合並排序 Merge sort
堆排序 Heap sort
快速排序 Quick sort
動態規劃 DP (Dynamic Programming)
背包問題 Knapsack problem
霍夫曼編碼 Huffman Coding
迪傑斯特拉演算法 Dijkstra’s algorithm
貝爾曼-福德演算法 Bellman-Ford algorithm
弗洛伊德演算法 Floyd-Warshall algorithm
回溯 Back-Tracking
N皇後問題 N-Queen problem
漸進增長 Asymptotic growth(包含O-notationΩ-notation Θ-notation)
線性規劃 Linear programming
隨機數生成 Random number generation
圖的生成 Generating graphs
圖論-多項式演算法 Graph Problems – polynomial algorithm
連通分支 Connected components
最小生成樹 Minimum Spanning Tree
最短路徑 Shortest path
NP問題 Non-Deterministic Polynomial problem
旅行商問題 Traveling salesman problem
同構 Graph isomorphism
壓縮 Text compression
最長公共子串 Longest Common Substring
最短公共父串 Shortest Common Superstring
收斂速度 Rate of convergence
5.4.4 數據結構相關術語
集合 Set Data Structures
線性方程組 Linear Equations
數據抽象 Data abstraction
數據元素 Data element
數據對象 Data object
數據類型 Data type
邏輯結構 Logical structure
物理結構 Physical structure
線性結構/非線性結構 Linear structure / Nonlinear structure
線性表 Linear list
棧 Stack
隊列 Queue
串 String
圖 Graph
插入 Insertion
刪除 Deletion
前趨 Predecessor
後繼 Successor
直接前趨 Immediate predecessor
直接後繼 Immediate successor
雙端列表 Double-ended queue
循環隊列 Circular queue
指針 Pointer
先進先出表(隊列) First-in first-out list
後進先出表(隊列) Last-in first-out list
棧底/棧頂 Bottom /Top
壓入/彈出 Push/ Pop
隊頭/隊尾 Front/ Rear
上溢/下溢 Overflow/ Underflow
數組 Array
矩陣 Matrix
多維數組 Multi-dimensional array
以行為主/以列為主的順序分配 Row major order / Column major order
三角矩陣 Triangular matrix
對稱矩陣 Symmetric matrix
稀疏矩陣 Sparse matrix
轉置矩陣 Transposed matrix
鏈表 Linked list
線性鏈表 Linear linked list
單鏈表 Single linked list
多重鏈表 Multilinked list
循環鏈表 Circular linked list
雙向鏈表 Doubly linked list
十字鏈表 Orthogonal list
廣義表 Generalized list
指針域 Pointer field
頭結點 Head node
頭指針/尾指針 Head pointer/ Tail pointer
空白串 Blank string
空串(零串)Null string
子串 Substring
樹 Tree
子樹 Subtree
森林 Forest
根 Root
葉子 Leaf
深度 Depth
雙親/孩子/兄弟/祖先/子孫 Parents/ Children/ Brother/ Ancestor/ Descendant
二叉樹 Binary tree
平衡二叉樹 Balanced binary tree
滿二叉樹 Full binary tree
完全二叉樹 Complete binary tree
遍歷二叉樹 Traversing binary tree
二叉排序樹 Binary sort tree
二叉查找樹 Binary search tree
線索二叉樹 Threaded binary tree
哈夫曼樹 Huffman tree
有序樹/無序樹 Ordered tree / Unordered tree
判定樹 Decision tree
數字查找樹 Digital search tree
樹的遍歷 Traversal of tree
先序遍歷 Preorder traversal
中序遍歷 Inorder traversal
後序遍歷 Postorder traversal
子圖 Subgraph
有向圖/無向圖 Digraph(directed graph)/Undigraph(undirected graph)
完全圖 Complete graph
連通圖 Connected graph
非連通圖 Unconnected graph
強連通圖 Strongly connected graph
弱連通圖 Weakly connected graph
有向無環圖 Directed acyclic graph
重連通圖 Biconnected graph
二部圖 Bipartite graph
邊 Edge
頂點 Vertex
連接點 Articulation point
初始結點 Initial node
終端結點 Terminal node
相鄰邊 Adjacent edge
相鄰頂點 Adjacent vertex
關聯邊 Incident edge
入度/出度 In-degree/ Out-degree
有序對/無序對 Ordered pair/ Unordered pair
簡單路徑 Simple path
簡單迴路 Simple cycle
連通分量 Connected component
鄰接矩陣 Adjacency matrix
鄰接表 Adjacency list
鄰接多重表 Adjacency multi-list
遍歷圖 Traversing graph
生成樹 Spanning tree
拓撲排序 Topological sort
偏序 Partial order
AOV網 Activity On Vertex network
AOE網 Activity On Edge network
關鍵路徑 Critical path
線性查找(順序查找) Linear search (Sequential search)
二分查找 Binary search
分塊查找 Block search
散列查找 Hash search
平均查找長度 Average search length
散列表 Hash table
散列函數 Hash function
直接定址法 Immediately allocating method
數字分析法 Digital analysis method
平方取中法 Mid-square method
隨機數法 Random number method
內部排序 Internal sort
外部排序 External sort
選擇排序 Selection sort
基數排序 Radix sort
平衡歸並排序 Balance merging sort
二路平衡歸並排序 Balance two-way merging sort
多步歸並排序 Ploy phase merging sort
置換選擇排序 Replacement selection sort
索引文件 Indexed file
索引順序文件 Indexed sequential file
索引非順序文件 Indexed non-sequential file
多重鏈表文件 Multi-list file
倒排文件 Inverted file
5.4.5 計算機網路相關術語
埠 Port
伺服器 Server
客戶端 Client
服務訪問點 SAP (Service Access Point)
開放系統互聯 OSI (Open System Interconnection)
物理層 Physical layer
數據鏈路層 Data link layer
網路層 Network layer
運輸層 Transport layer
會話層 Session layer
表示層 Presentation layer
應用層 Application layer
TCP/IP協議 TCP / IP protocol
信道容量 Channel capacity
香農 Shannon
奈奎斯特 Nyquist
雙絞線 UTP (Unshielded Twisted Paired)
同軸電纜 Coaxial cable
光纖 Optical fiber
不歸零碼 NRZ (Non Return to Zero)
曼徹斯特編碼 Manchester coding
調制 Molation
脈碼調制 PCM (Pulse Code Molation)
增量調制 DM (Delta Molation)
同步傳輸/非同步傳輸 Synchronous transmission / ATM (Asynchronous transmission)
循環冗餘校驗 CRC (Cyclic Rendancy Check)
流量控制 Flow control
滑動窗口 Sliding window
差錯控制 Error control
幀結構 Frame structure
復用 Reuse
非對稱數字用戶線路 ADSL (Asymmetric digital subscriber line)
電路交換和分組交換 Circuit switching and packet switching
頻分多路復用 Frequency division multiplexing
信令 Signaling
數據報 Datagram
虛電路 Virtual circuit
幀中繼 Frame relay
信元 Ceil
擁塞 Congestion
反壓 Back pressure
令牌桶 Token bucket
環形/匯流排形/樹形和星形結構 Ring/ bus/ tree and star structure
區域網 LAN (local area network)
集線器 Hub
交換機 Switch
路由器 Router
網橋 Network bridge
乙太網監聽演算法 Ethernet listener algorithm
子網掩碼 Subnet mask
三次握手 Three-way handshake
地址解析協議 APP (Address resolution protocol)
瘦客戶機 Thin client
網際控制報文協議 ICMP (Internet Control Message Protocol)
網際網路群組管理協議 IGMP (Internet Group Management Protocol)
拒絕服務 Denial of service
邊界網關 Border gateway
域名系統 DNS (Domain Name System)
數據鏈路控制 DLC (Data Link Control)
互聯網電子郵件協議標准 POP (Post Office Protocol)
遠程式控制制 Remote control
簡單郵件傳送協議 SMTP (Simple Mail Transport Protocol)
;Ⅳ 編譯原理中的"token",翻譯成中文應該怎麼說
token=
'';
s=getchar();
getbe();
switch(s){
case
'a':
case
'b':
…
case
'z':
while(letter(
)‖digit(
))
{
concatenation(
);
getchar(
);
}
retract(
);
*掃描指針回退一個字元*/
c=reserve(
);
if
(c==0){
buildlist(
);
/*將標識符登錄到符號表中*/
return(id,指向id的符號表入口指針);
}else{
return(保留字碼,null);
}
break;
case
'0':
case
'1':
…
case
'9':
while
(digit(
)){
concatenation(
);
getchar(
);
}
retract();
buildlist(
);/*將常數登錄到常數表中*/
return(num,num的常數表入口指針);
break;
case
'+':
return('+',null);
break;
case
'−':
return('−',null);
break;
case
'*':
return('*',null);
break;
case
'<':
getchar(
);
if
(character==
'=')
return(relop,le);
else{
retract();
return(relop,lt);
}
break;
case
'=':
getchar(
);
if(character==
'=')
return
(relop,
eq);
else{
retract(
);
return('=',
null);
}
break;
case
';':
return(';',
null);
break;
default:
error(
);
Ⅵ 求編譯原理的名詞解釋題
詞法分析(Lexical analysis或Scanning)和詞法分析程序(Lexical analyzer或Scanner)
詞法分析階段是編譯過程的第一個階段。這個階段的任務是從左到右一個字元一個字元地讀入源程序,即對構成源程序的字元流進行掃描然後根據構詞規則識別單詞(也稱單詞符號或符號)。詞法分析程序實現這個任務。詞法分析程序可以使用lex等工具自動生成。
語法分析(Syntax analysis或Parsing)和語法分析程序(Parser)
語法分析是編譯過程的一個邏輯階段。語法分析的任務是在詞法分析的基礎上將單詞序列組合成各類語法短語,如「程序」,「語句」,「表達式」等等.語法分析程序判斷源程序在結構上是否正確.源程序的結構由上下文無關文法描述.
語義分析(Syntax analysis)
語義分析是編譯過程的一個邏輯階段. 語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查, 進行類型審查.例如一個C程序片斷:
int arr[2],b;
b = arr * 10;
源程序的結構是正確的.
語義分析將審查類型並報告錯誤:不能在表達式中使用一個數組變數,賦值語句的右端和左端的類型不匹配.
Lex
一個詞法分析程序的自動生成工具。它輸入描述構詞規則的一系列正規式,然後構建有窮自動機和這個有窮自動機的一個驅動程序,進而生成一個詞法分析程序.
Yacc
一個語法分析程序的自動生成工具。它接受語言的文法,構造一個LALR(1)分析程序.因為它採用語法制導翻譯的思想,還可以接受用C語言描述的語義動作,從而構造一個編譯程序. Yacc 是 Yet another compiler compiler的縮寫.[回頁首]
源語言(Source language)和源程序(Source program)
被編譯程序翻譯的程序稱為源程序,書寫該程序的語言稱為源語言.[回頁首]
目標語言(Object language or Target language)和目標程序(Object program or Target program)
編譯程序翻譯源程序而得到的結果程序稱為目標程序, 書寫該程序的語言稱為目標語言.[回頁首]
中間語言(中間表示)(Intermediate language(representation))
在進行了語法分析和語義分析階段的工作之後,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間表示或中間代碼。所謂「中間代碼」是一種結構簡單、含義明確的記號系統,這種記號系統復雜性介於源程序語言和機器語言之間,容易將它翻譯成目標代碼。另外,還可以在中間代碼一級進行與機器無關的優化。
[回頁首]
文法(Grammars)
文法是用於描述語言的語法結構的形式規則。文法G定義為四元組(,,,)。其中為非終結符號(或語法實體,或變數)集;為終結符號集;為產生式(也稱規則)的集合;產生式(規則)是形如或 a ::=b 的(a , b)有序對,其中(∪)且至少含有一個非終結符,而(∪)。,和是非空有窮集。稱作識別符號或開始符號,它是一個非終結符,至少要在一條規則中作為左部出現。
一個文法的例子: G=(={A,R},={0,1} ,={A?0R,A?01,R?A1},=A) [回頁首]
文法分類(A hierarchy of Grammars)
著名語言學家Noam Chomsky定義了四類文法和四種形式語言類,文法的四種類型分別是0型、1型、2型和3型。幾類文法的差別在於對產生式施加不同的限制,分別是:
0型文法(短語結構文法)(phrase structure grammars):
設G=(,,,),如果它的每個產生式是這樣一種結構: (∪) 且至少含有一個非終結符,而(∪),則G是一個0型文法。
1型文法(上下文有關文法)(context-sensitive grammars):
設G=(,,,)為一文法,若中的每一個產生式均滿足|,僅僅 除外,則文法G是1型或上下文有關的。
2型文法(上下文無關文法)(context-free grammars):
設G=(,,,),若P中的每一個產生式滿足:是一非終結符,(∪) 則此文法稱為2型的或上下文無關的。
3型文法(正規文法)(regular grammars):
設G=(,,,),若中的每一個產生式的形式都是A→aB或A→a,其中A和B都是非終結,a是終結符,則G是3型文法或正規文法。
0型文法產生的語言稱為0型語言。
1型文法產生的語言稱為1型語言,也稱作上下文有關語言。
2型文法產生的語言稱為2型語言,也稱作上下文無關語言。
3型文法產生的語言稱為3型語言,也稱作正規語言。
Ⅶ 想要自學編譯原理,需要先學好哪些先修課給點好的學習建議。
首先要弄清楚編譯原理的本質。
編譯本質上就是翻譯,將一種語言翻譯成另一種語言,並且保證含義不變。
而編譯軟體大致分為
詞語分析、語法分析、語義分析以及其他部分。
詞語分析就分析一串串字母哪些屬於一個詞。
語法分析就是分析一串串詞哪些符合語法規則, 哪些不符合語法規則。
語義分析就是分析符合語法規則的詞,在特定語法規則下表達了什麼含義。
這是編譯軟體的前端,後端就是將這些含義轉換相應的機器指令。
Ⅷ 編譯原理中詞法分析器的輸入是單詞符號串,為什麼不是源程序這兩者有什麼區別
編譯原理語規則詞規則同處於:規則主要識別單詞,語主要識別單片語句
詞析詞析程序:
詞析階段編譯程第階段階段任務左右字元字元讀入源程序即構源程序字元流進行掃描根據構詞規則識別單詞(稱單詞符號或符號)詞析程序實現任務詞析程序使用lex等工具自
語析(Syntax analysis或Parsing)語析程序(Parser)
語析編譯程邏輯階段語析任務詞析基礎單詞序列組合各類語短語程序語句表達式等等.語析程序判斷源程序結構否確.源程序結構由文關文描述.
語義析(Syntax analysis)
語義析編譯程邏輯階段. 語義析任務結構確源程序進行文關性質審查, 進行類型審查.語義析審查類型並報告錯誤:能表達式使用數組變數,賦值語句右端左端類型匹配.
求出「男」生的語文成績和。特別提醒:如果把
Ⅸ 在編譯原理中,語法規則和詞法規則有什麼不同..
通俗的說,
規則主要識別單詞
語法主要識別多個單片語成的句子
Ⅹ 編譯原理 名詞解釋
1、識別源程序中意義獨立的最小單位--單詞
2、不確定的有窮自動機(Nondeterministic Finite Automata)--NFA
3、是指程序—順序執行的語句序列,其中只有一個入口和一個出口,入口就是其中的第—個語句,出口就是其中的最後一個語句--基本塊
4、它把高級語言編寫的源程序翻譯成與之在邏輯上等價的機器語言或匯編語言的目標程序--編譯程序
5、是規則的非空有窮集合--文法
6、確定的有窮自動(Deterministic Finite Automata)--DFA