Ⅰ 編譯原理什麼是素短語
編譯原理中,素短語是至少含義一個終結符,並且自身不包含任何更小素短語的一種短語。
素短語是一種特殊的短語,它是一個遞歸的定義,至少含有一個終結符,並且除它自身之外不再含任何更小的素短語,所謂最左素短語就是處於句型最左邊的素短語的短語。
一個算符優先文法G的任何句型的最左素短語是滿足以下條件的最左子串NaNb…NcNdN(N是非終結符,a,b,c,d是終結符)。例如:句型T+T*F+id,T*F是最左素短語,id是素短語。
(1)編譯原理中的短語怎麼看擴展閱讀:
通過語法樹可以得知素短語:
1、每個句型對應一棵語法樹
2、每棵語法樹的葉子結點從左到右排列構成一個句型
3、每棵語法樹的子樹的葉子結點從左到右排列構成一個短語
4、每棵語法樹的簡單子樹(只有父子兩層結點)的葉子結點從左到右排列構成一個簡單(直接)短語。
5、素短語是至少包含一個終結符的短語,但它不能包含其它素短語。
Ⅱ 編譯原理文法問題,急急急
第一題
S->AB
A->aA'b
A'->aA'b|ε
B->B'
B'->dB'|ε
----------------------
第二題
S->aS'b
S'->aS'b|D
D->dD|ε
----------------------
第三題
最左推導的話,我認為要先消除左遞歸才行(把左遞歸轉成右遞歸),消除之後:
N->DN'
N'->DN'|ε
D->0|1|2|...|9
最左推導為 N->DN'->2N'->2DN'->25N'->25DN'->258N'->258
規范推導(最右推導)為N->ND->N8->ND8->N58->D58->258
----------------------
第四題
構造一下語法樹就知道了。直接短語是深度為2的節點(根節點是深度0)。短語是深度為2的節點代入深度為1的產生式中。句柄是所有直接短語中最左的那個。
1.baaa
>>>
_________S
_______/___\
______A_____B
_____/__\____|
____A___a___a
___/__\
__b___B
_______|
______a
直接短語為 Aa、a
短語為 Aaa
句柄為 Aa
2.bBaa
>>>
_________S
_______/___\
______A_____B
_____/__\____|
____A___a___a
___/__\
__b___B
直接短語為 Aa、a
短語為 Aaa
句柄為 Aa
Ⅲ 編譯原理的終結符和非終結符如何理解
一、非終結符:
1、非終結符可以再分成更細的東西。
2、不是終結符的都是非終結符。非終結符可理解為一個可拆分元素,而終結符是不可拆分的最小元素。終結符號就是語言中用到的基本元素,名詞、動詞、形容詞、助詞等等基本語言單位。
二、終結符:
1、終結符直接就代表一個意思,比如關鍵字if就不能再分成i和f了。
2、通俗的說就是不能單獨出現在推導式左邊的符號,也就是說終結符不能再進行推導。非終結符則是"語法"中用到的元素,除非談論"語法",一般交談語言中並不會用到非終結符。比如:主語、短語、片語、句子。
(3)編譯原理中的短語怎麼看擴展閱讀:
終結符和非終結符在計算機科學和語言學的領域是用來指定推導規則的元素。在某個形式語法之中,終結符和非終結符是兩個不交的集合。
從形式語言中定義看,終結符(T)就是不可再分的字元或串。而非終結符(N)是一個遞歸形式的定義:由終結符和至少一個非終結符號組成的串。
如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程序的其餘部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。
需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程序的邏輯。
網路-終結符
網路-編譯
Ⅳ 編譯原理中的短語、直接短語、句柄
就是說,對一棵分析樹從上到下,從左到右把所有的直接短語寫出來,在所有的直接短語的最前面(也就是最左邊)的那個就是句柄啦。
希望幫到你理解這個意思。
Ⅳ 一個編譯原理問題
首先寫出指定句型的規范推導:
S→(L)→(L,S)→(L,(L))→(L,(S))→(L,(a))→(S,(a))
然後畫出分析樹如下圖
根據分析樹的葉子結點可以找出該句型的所有短語:
aS(a)S,(a)(S,(a))
直接短語,就是經過一次非終結符替換得到的短語:
aS沒了
句柄就是最左直接短語,要進行規約的部分,根據分析樹我們找到最左直接短語為:
S
Ⅵ 編譯原理有關語法的題
短語:E+F*(E+i),F*(E+i),(E+i),E+i,i
直接短語:i(能直接推出來的)
句柄:i(最左直接短語)
素短語:i(並且至少含有一個終結符並除自身之外不含任何更小的素短語)
這些你根據語法樹看,就比較好找了啊~
語法樹如圖:
Ⅶ 誰能夠解釋下編譯原理中什麼是FIRSTVT,和LASTVT,盡量淺顯易懂點謝謝
Firstvt和Lastvt是為了畫算符優先關系表的(就是表裡面填優先大於小於等於的那個)。
然後要注意他們可都是終結符的集合。
Firstvt
找Firstvt的三條規則:如果要找A的Firstvt,A的候選式中出現:
A->a.......,即以終結符開頭,該終結符入Firstvt
A->B.......,即以非終結符開頭,該非終結符的Firstvt入A的Firstvt
A->Ba.....,即先以非終結符開頭,緊跟終結符,則終結符入Firstvt
Lastvt
找Lastvt的三條規則:如果要找A的Lastvt,A的候選式中出現:
A->.......a,即以終結符結尾,該終結符入Lastvt
A->.......B,即以非終結符結尾,該非終結符的Lastvt入A的Lastvt
A->.....aB,即先以非終結符結尾,前面是終結符,則終結符入Firstvt
Ⅷ 編譯原理,設文法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
(8)編譯原理中的短語怎麼看擴展閱讀
文法:以有窮的集合描述無窮的計劃的工具。
字母表:元素的非空有窮集合,其中的元素稱為符號,因此也叫符號集。
符號串:由字母表中的元素組成的任何有窮序列,串中的元素個數叫做符號串的長度,空符號串ε,長度為0。
符號串的運算:
連接-符號串x = ab,y=cd, xy = abcd
方冪-z=xn,當n = 0, z = ε,當 n = 2, z = xx
集合的閉包-∑* = ∑0 ∪∑1 ∪∑2 ∪…∪∑n
∑+ 為正閉包 = ∑1 ∪∑2 ∪…∪∑n
Ⅸ 編譯原理中,素短語是個什麼東東
素短語是一個短語,它至少含有一個終結符,而且除他之外不含有其他素短語。
短語:一個句型的語法樹中任一子樹葉節點所組成的符號串都是該句型的短語。
Ⅹ 編譯原理的疑問
設文法G的開始符號為S,abc是G的一個句型。
如果有句型S *=>aAc,且A +=>b,則稱b是句型abc相對於非終結符A的短語。
假如A =>b,則稱b是句型abc相對於規則A=>b的直接短語。
句柄就是句型的最左直接短語。
假如一個短語,有且只含有一個非終結符,則稱之為素短語;(語法樹)最左邊的素短語為最左素短語。
形式語言里,規范推導是最右開始,則歸約是最左開始。
短語的特點是由非終結符而來。在算符優先分析里,短語是進行歸約的方向。它和常見的中文、英文里所說的短語概念有相似,也有不同。