導航:首頁 > 源碼編譯 > 編譯原理中空字元也是短語嗎

編譯原理中空字元也是短語嗎

發布時間:2024-04-01 18:35:52

『壹』 【編譯原理】第二章:語言和文法



上述文法 表示,該文法由終結符集合 ,非終結符集合 ,產生式集合 ,以及開始符號 構成。
而產生式 表示,一個表達式(Expression) ,可以由一個標識符(Identifier) 、或者兩個表達式由加號 或乘號 連接、或者另一個表達式用括弧包裹( )構成。

約定 :在不引起歧義的情況下,可以只寫產生式。如以上文法可以簡寫為:

產生式

可以簡寫為:

如上例中,

可以簡寫為:

給定文法 ,如果有 ,那麼可以將符號串 重寫 為 ,記作 ,這個過程稱為 推導
如上例中, 可以推導出 或 或 等等。

如果 ,
可以記作 ,則稱為 經過n步推導出 ,記作 。

推導的反過程稱為 歸約

如果 ,則稱 是 的一個 句型(sentential form )。

由文法 的開始符號 推導出的所有句子構成的集合稱為 文法G生成的語言 ,記作 。
即:


文法

表示什麼呢?
代表小寫字母;
代表數字;
表示若干個字母和數字構成的字元串;
說明 是一個字母、或者是字母開頭的字元串。
那麼這個文法表示的即是,以字母開頭的、非空的字元串,即標識符的構成方式。

並、連接、冪、克林閉包、正閉包。
如上例表示為:

中必須包含一個 非終結符


產生式一般形式:
即上式中只有當上下文滿足 與 時,才能進行從 到 的推導。

上下文有關文法不包含空產生式( )。


產生式的一般形式:
即產生式左邊都是非終結符。

右線性文法
左線性文法
以上都成為正則文法。
即產生式的右側只能有一個終結符,且所有終結符只能在同一側。

例:(右線性文法)

以上文法滿足右線性文法。
以上文法生成一個以字母開頭的字母數字串(標識符)。
以上文法等價於 上下文無關文法

正則文法能描述程序設計語言中的多數單詞。

正則文法能描述程序設計語言中的多數單詞,但不能表示句子構造,所以用到最多的是CFG。

根節點 表示文法開始符號S;
內部節點 表示對產生式 的應用;該節點的標號是產生式左部,子節點從左到右表示了產生式的右部;
葉節點 (又稱邊緣)既可以是非終結符也可以是終結符。

給定一個句型,其分析樹的每一棵子樹的邊緣稱為該句型的一個 短語
如果子樹高度為2,那麼這棵子樹的邊緣稱為該句型的一個 直接短語

直接短語一定是某產生式的右部,但反之不一定。

如果一個文法可以為某個句子生成 多棵分析樹 ,則稱這個文法是 二義性的

二義性原因:多個if只有一個else;
消岐規則:每個else只與最近的if匹配。

『貳』 編譯原理,設文法G[E]如下,句型T+T * F+a的素短語是__

試給出句型T-T/F+a和T+T*F-F↑a的短語、句柄、素短語:

句型1:短語TT/F+a, T-T/F, T, T/F, a

句型T

素短語: T/F,a

句型2:短語E+T*F_F↑a, E+T*F, T*F,F↑a, a

句型T*F

素短語: T*F,a

(2)編譯原理中空字元也是短語嗎擴展閱讀

文法:以有窮的集合描述無窮的計劃的工具。

字母表:元素的非空有窮集合,其中的元素稱為符號,因此也叫符號集。

符號串:由字母表中的元素組成的任何有窮序列,串中的元素個數叫做符號串的長度,空符號串ε,長度為0。

符號串的運算:

連接-符號串x = ab,y=cd, xy = abcd

方冪-z=xn,當n = 0, z = ε,當 n = 2, z = xx

集合的閉包-∑* = ∑0 ∪∑1 ∪∑2 ∪…∪∑n

∑+ 為正閉包 = ∑1 ∪∑2 ∪…∪∑n

『叄』 短語、簡單短語、句柄如何區分(編譯原理)

剛開始學編譯原理的時候,我對這三個概念真的很懵逼→_→

因為資料上的文字說明太不直觀了,看了半天愣是很懵逼,於是往下看,看到了例子之後,就覺得明朗了許多!

上圖!

這是一顆語法樹,那如何求它的短語、簡單短語和句柄呢?

我們按照 [句柄→簡單短語→短語] 的順序來找

首先:句柄(整棵樹 最左 邊的 葉子 ,共1個)

          a1

其次:簡單短語(所有 葉子 ,共6個)

          a1, ε, b1, b2, a2, a3

最後:短語(所有的葉子+每個中間節點所包含的葉子 序列 , 共9個)

a1, ε, b1, b2, a2, a3, 

a2a3, εb1b2, a1εb1b2a2a3

包含關系:短語 > 簡單短語 > 句柄

『肆』 編譯原理有關語法的題

短語:E+F*(E+i),F*(E+i),(E+i),E+i,i

直接短語:i(能直接推出來的)

句柄:i(最左直接短語)

素短語:i(並且至少含有一個終結符並除自身之外不含任何更小的素短語)

這些你根據語法樹看,就比較好找了啊~

語法樹如圖:

『伍』 編譯原理-文法定義

文法定義公式如下:

Chomsky 文法分類將文法分為四種,0型文法( PSG )、1型文法( CSG )、2型文法( CFG )和3型文法( RG )。

又被稱為無限制文法(Unrestricted Grammar), 或者短語結構文法(Phrase Structure Grammar)
定義: 對於產生式 α→β , α 至少包含一個非終結符。

為什麼要叫無限制文法,明明它要求產生式的左部必須包含一個非終結符。

又被稱為上下文有關文法(Context-Sensitive Grammar)
定義:對於產生式 α→β , |α| <= |β| , 僅僅 S→ε 除外

為什麼叫做上下文有關文法?

一般情況下,這種產生式的形式為 α1Aα2→α1βα2

又被稱為上下文無關文法(Context-Free Grammar)
定義:對任一產生式 α→β ,都有 α∈VN,β∈(VN∪VT)*

為什麼叫上下文無關文法?

又被稱為正則文法(Regular Grammar,RG),分為右線性(Right Linear)文法和左線性(Left Linear)文法。

定義: 對任一產生式 α→β ,都有 α∈VN,β最多兩個字元元素,如果有二個字元必須是(終結符+非終結符)的格式,如果是一個字元,那麼必須是終結符。

根據產生式右部非終結符位置不同,分為右線性文法和左線性文法。

可以看出,不同文法就是對產生式進行逐層的限制,所以各個文法是包含關系,即0型文法包含1型文法;1型文法又包含2型文法;2型文法最後包含3型文法。

『陸』 編譯原理中的短語、直接短語、句柄

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

『柒』 編譯原理:空字元串可以是短語嗎

ε可以是短語

『捌』 編譯原理空字元ε與空集區別

不知你說的空集是為何指?據我所猜應該是指某個文法所能推導的語句的集合為空,這里的空集意思是不存在匹配該文法的句子。而ε則是指某個包含非終結符號的文法符號串的推導為空,例如A->ε。咋看上去好像差不多,其實它們卻有本質的區別,空集是面向結果的,即一個文法所有可能推導的最終語句;而ε則是面向定義的,即某個非終結符號可以推導為空,這樣的定義可以在推導過程重復使用。
最後給你來點哲學的。為什麼會存在ε?古代有句話叫,其大無外,其小無內,大小之間轉化的奧秘在編譯原理中真實的被呈現了出來,就看你有沒有發現。可以肯定的說,ε的存在正是應了無窮的需要。例如:A->aA|ε,這里ε既可以A可以表達任意多的a串,又可以動態的將其終止,不至無休止的無限下去。
你終會明白,理解了ε,就是理解了形式語言的整個靈魂。

『玖』 請教幾個有關編譯原理的習題!

答:

1. S -> aS | ε
2. S -> aS | Sb | ab

設 有字元串序列 abc, 而字元串 abc 符合是文法S.
abc 有兩種推導 ① S -> Ac, A -> bc
② S -> aB, B -> bc
有兩語法樹,二義文法

不好意思忘記了短語、直接短語和句柄
課本上應該有

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

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

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

假設有一個文法

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

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

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

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

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

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

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

運行結果:

閱讀全文

與編譯原理中空字元也是短語嗎相關的資料

熱點內容
c語言編譯的錯誤提示 瀏覽:763
驗機蘋果app哪個最好 瀏覽:663
光遇國際服安卓如何購買禮包 瀏覽:52
163app怎麼下載 瀏覽:244
電腦程序員下場 瀏覽:42
編譯原理ll1文法判斷 瀏覽:723
qt用vs2015編譯 瀏覽:547
結婚日子最好的演算法 瀏覽:791
安卓怎麼把數據傳到蘋果里 瀏覽:501
編譯器標識 瀏覽:789
編程珠璣第三章 瀏覽:782
windows如何開啟tftp伺服器 瀏覽:107
歐姆龍plc編程指令表 瀏覽:186
程序員遠程收入不穩定 瀏覽:860
演算法原理怎麼寫 瀏覽:469
有個動漫女主藍頭發是程序員 瀏覽:998
雲伺服器資源評估 瀏覽:882
微雲下載文件夾是空的 瀏覽:3
r9數控車的編程 瀏覽:403
為什麼刪不掉ksafe文件夾 瀏覽:291