導航:首頁 > 源碼編譯 > 編譯原理句柄和最左素短語的區別

編譯原理句柄和最左素短語的區別

發布時間:2022-12-17 02:22:34

編譯原理-句型、句子、短語、直接短語、句柄、素短語、最左素短語

在進行語法分析的時候,有時候會對這些詞語的概念不清晰,這里我們就詳細歸納總結一下。

可以看出這個裡面,最需要理解的概念就是短語,其他大部分概念都是在短語基礎上延伸的,從概念上可以看出:

假設有一個文法

針對文法的一個特定句型 (Sd(T)db) , 其推導過程如下:

這個句型 (Sd(T)db) 對應的 CFG 分析樹如下:

那個這個句型 (Sd(T)db) 有多少個短語呢?

還記得短語的定義么, S ⇒* αβδ , αβδ 代表句型就是這里的 (Sd(T)db) 。

因此這個句型 (Sd(T)db) :

演算法非常簡單,就是通過分析樹的後序遍歷,先將子樹的葉節點從左到右排合並成字元串(即一個短語),然後用它代表子樹的根節點的值,再和與子樹根節點同一層節點值合並,得到新的短語。就這樣從分析樹的最底層,一路合並到分析樹的根節點,就能得到所有的短語了。

通過遞歸的方法,獲取短語列表 phraseList , 直接短語列表 directPhraseList 和 素短語列表 plainPhraseList 。

運行結果:

㈡ 編譯原理中的短語、直接短語、句柄

如果給出短語等名詞的形式化的定義,便較難理解,不好求。我們通過構造語法樹來求解。首先你應該會根據文法將所給句型構造成語法樹的形式,即根據文法怎樣推導出句型E+T*F。如果你有數據結構二叉樹基礎的話這很簡單就構造出來了。構造出語法樹後,求短語看根節點,有T,和E。則短語為:E+T*F,T*F,而直接短語是指能直接推出葉子節點的根所對應的短語,可知該節點為T,直接短語為:T*F。句柄是最左直接短語,可知為:T*F。

㈢ 編譯原理什麼是素短語

編譯原理中,素短語是至少含義一個終結符,並且自身不包含任何更小素短語的一種短語。

素短語是一種特殊的短語,它是一個遞歸的定義,至少含有一個終結符,並且除它自身之外不再含任何更小的素短語,所謂最左素短語就是處於句型最左邊的素短語的短語。

一個算符優先文法G的任何句型的最左素短語是滿足以下條件的最左子串NaNb…NcNdN(N是非終結符,a,b,c,d是終結符)。例如:句型T+T*F+id,T*F是最左素短語,id是素短語。

(3)編譯原理句柄和最左素短語的區別擴展閱讀:

通過語法樹可以得知素短語:

1、每個句型對應一棵語法樹

2、每棵語法樹的葉子結點從左到右排列構成一個句型

3、每棵語法樹的子樹的葉子結點從左到右排列構成一個短語

4、每棵語法樹的簡單子樹(只有父子兩層結點)的葉子結點從左到右排列構成一個簡單(直接)短語。

5、素短語是至少包含一個終結符的短語,但它不能包含其它素短語。

㈣ 編譯原理中的句柄是什麼意思

是操作系統用來管理不同的對象,給他們一個編號而已

比如窗口、線程、圖標等都會對應一個句柄,這樣可以方便標識與管理

句柄其實也就是一個整數值,而且是唯一的

㈤ 句柄的編譯原理

一個句型的最左直接短語稱為該句型的句柄,句型的句柄是和某產生式右部匹配的子串,並且,把它規約成該產生式左部的非終結符,代表了最右推導過程的逆過程的一步。
如右圖,在推導過程中,S→aABe→aAde→aAbcde→abbcde,此四步的句柄分別為aABe,d,Abc,b
句柄的特徵:
1. 它是直接短語,即某規則右部。
2. 它具有最左性。
注意:短語、直接短語和句柄都是針對某一句型的,特指句型中的哪些符號子串能構成短語和直接短語,離開具體的句型來談短語、直接短語和句柄是無意義的。另外句柄的右邊僅含終結符如果文法二義,那麼句柄可能不唯一。

㈥ 什麼是句柄什麼是最左素短語

句柄(Handle)是一個是用來標識對象或者項目的標識符,可以用來描述窗體、文件等,值得注意的是句柄不能是常量。

Windows之所以要設立句柄,根本上源於內存管理機制的問題,即虛擬地址。簡而言之數據的地址需要變動,變動以後就需要有人來記錄、管理變動,因此系統用句柄來記載數據地址的變更。

最左素短語就是處於句型最左邊的素短語的短語。素短語是一個遞歸的定義,至少含有一個終結符,並且除它自身之外不再含任何更小的素短語。



(6)編譯原理句柄和最左素短語的區別擴展閱讀:

句柄的使用

句柄在Windows編程中是一個很重要的概念,在 Windows程序中並不是用物理地址來標識一個內存塊、文件、任務或動態裝入模塊的。相反地,Windows API給這些項目分配確定的句柄,並將句柄返回給應用程序,然後通過句柄來進行操作。

應該明白的是,句柄是一個標識符,是用來標識對象或者項目的。從數據類型上來看它只是一個16位的無符號整數。

應用程序幾乎總是通過調用一個Windows函數來獲得一個句柄,之後其他的Windows函數就可以使用該句柄,以引用相應的對象。在 Windows編程中會用到大量的句柄。



閱讀全文

與編譯原理句柄和最左素短語的區別相關的資料

熱點內容
交易平台小程序源碼下載 瀏覽:146
程序員記筆記用什麼app免費的 瀏覽:644
java與單片機 瀏覽:893
伺服器內網如何通過公網映射 瀏覽:476
程序員穿越到宋代 瀏覽:622
怎麼使用雲伺服器掛游戲 瀏覽:616
真實的幸福pdf 瀏覽:342
d盤php調用c盤的mysql 瀏覽:264
怎麼樣搭建源碼網站 瀏覽:427
新概念四冊pdf 瀏覽:361
怎麼下載悅虎檢測app 瀏覽:528
cad表達式命令 瀏覽:198
程序員去一個小公司值不值得 瀏覽:846
程序員做個程序多少錢 瀏覽:495
win10原始解壓軟體 瀏覽:319
阿里程序員的老家 瀏覽:258
量子加密銀行 瀏覽:193
命令方塊獲得指令手機 瀏覽:499
學習結束感言簡短程序員 瀏覽:398
android關機鬧鍾實現 瀏覽:968