⑴ 編譯原理題:分別構造下列語言的文法(4個題) 200分獻上。。。
(3)任何不是以0打頭的所有奇整數所組成的集合
解:G(S)
=
({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e,
I→J|2|4|6|8,
Jà1|3|5|7|9},S)
(4)所有偶數個0和偶數個1所組成的符號串集合
解:對應文法為
S→0A|1B|e,A→0S|1C
B→0C|1S
C→1A|0B
⑵ 編譯原理 文法題目
首先擴展文法為:
1) S1->S
2) S->aS
3) S->bS
4) S->a
則:
I0 = Closure({S1->.S})={S1->.S,S->.aS,S->.bS,S->.a}
go(I0,S) = Closure({S1->S.})={S1->S.} = I1
go(I0,a) = Closure({S->a.S,S->a.})={S->a.S,S->.aS,S->.bS,S->.a,S->a.} = I2
go(I0,b) = Closure({S->b.S})={S->b.S,S->.aS,S->.bS,S->.a}=I3
go(I2,S) = closure({S->aS.})={S->aS.}=I4
go(I2,a) = Closure({S->a.S,S->a.}) = I2
go(I2,b) = Closure({S->b.S}) =I3
go(I3,S) = Closure({S->bS.}) = {S->bS.} = I5
go(I3,a) = Closure({S->a.S,S->a.}) = I2
go(I3,b) = Closure({S->b.S}) = I3
由圖所示,狀態I2,既有歸約項目(S->a.)又有移近項目(S->.aS,S->.bS,S->.a),產生沖突。當用SRL分析法時,需向前看一步,即求出:
Follow(S) = Follow(S1) = {#}
則,Follow(S)∩{a,b} =∮
故而Action(I2,a) = s2
Action(I2,b) = s3
Action(I2,#) = r4
則構造出srl分析表如下所示:
Action Goto
a b # S
I0 s2 s3 1
I1 acc
I2 s2 s3 r4 4
I3 s2 s3 5
I4 r2 r2 r2
I5 r3 r3 r3
請採納。
⑶ 軟體設計師 編譯原理 文法的一道題,求解
我想first[A] 不應該像你說的那樣定義:從A出發能推導出的終結符號的集合中。這樣這道題考得就沒有什麼意義了:只要知道非終結符L都能推出哪些終結符就可以了。如果是要考查對first的理解的話,應該按照first的本意,即「第一個終結符」,這樣就只有B是正確的
⑷ 編譯原理文法題 求解
一看就是計科的 …………
我們都是 LL1 SLR1文法沒怎麼用過
進來問候下
有空加個好友 討論下
⑸ 編譯原理 有文法G(S)這道題怎麼做
首先擴展文法為:
1)S1->S
2)S->aS
3)S->bS
4)S->a
則:
I0=Closure({S1->.S})={S1->.S,S->.aS,S->.bS,S->.a}
go(I0,S)=Closure({S1->S.})={S1->S.}=I1
go(I0,a)=Closure({S->a.S,S->a.})={S->a.S,S->.aS,S->.bS,S->.a,S->a.}=I2
go(I0,b)=Closure({S->b.S})={S->b.S,S->.aS,S->.bS,S->.a}=I3
go(I2,S)=closure({S->aS.})={S->aS.}=I4
go(I2,a)=Closure({S->a.S,S->a.})=I2
go(I2,b)=Closure({S->b.S})=I3
go(I3,S)=Closure({S->bS.})={S->bS.}=I5
go(I3,a)=Closure({S->a.S,S->a.})=I2
go(I3,b)=Closure({S->b.S})=I3
由圖所示,狀態I2,既有歸約項目(S->a.)又有移近項目(S->.aS,S->.bS,S->.a),產生沖突。當用SRL分析法時,需向前看一步,即求出:
Follow(S)=Follow(S1)={#}
則,Follow(S)∩{a,b}=∮
故而Action(I2,a)=s2
Action(I2,b)=s3
Action(I2,#)=r4
則構造出srl分析表如下所示:
ActionGoto
ab# S
I0 s2s3 1
I1 acc
I2s2s3 r4 4
I3s2s3 5
I4 r2r2r2
I5 r3r3 r3
⑹ 編譯原理 設有文法G(S) 這題怎麼做求答案 謝謝
題出錯啦,G[S]表示開始符號是S,你的產生式中就沒有S啊,應更改改為G[E]
⑺ 編譯原理中怎樣寫文法和語言
寫文法:首先要清楚語言集的特徵,即找出其特殊值及通式,然後再按此考慮去寫出文法
寫語言:要先理解推導、句型、句子的概念,語言就是句子的全體。
⑻ 求解編譯原理的一道題:設有文法如下
首先要做這題你要知道判別文法類型
包括四個層次:
0-型文法(無限制文法或短語結構文法)包括所有的文法。該類型的文法能夠產生所有可被圖靈機識別的語言。可被圖靈機識別的語言是指能夠使圖靈機停機的字串,這類語言又被稱為遞歸可枚舉語言。注意遞歸可枚舉語言與遞歸語言的區別,後者是前者的一個真子集,是能夠被一個總停機的圖靈機判定的語言。
1-型文法(上下文相關文法)生成上下文相關語言。這種文法的產生式規則取如 αAβ -> αγβ 一樣的形式。這里的A 是非終結符號,而 α, β 和 γ 是包含非終結符號與終結符號的字串;α, β 可以是空串,但 γ 必須不能是空串;這種文法也可以包含規則 S->ε ,但此時文法的任何產生式規則都不能在右側包含 S 。這種文法規定的語言可以被線性有界非確定圖靈機接受。
2-型文法生成上下文無關語言。這種文法的產生式規則取如 A -> γ 一樣的形式。這里的A 是非終結符號,γ 是包含非終結符號與終結符號的字串。這種文法規定的語言可以被非確定下推自動機接受。上下文無關語言為大多數程序設計語言的語法提供了理論基礎。
3-型文法(正規文法)生成正規語言。這種文法要求產生式的左側只能包含一個非終結符號,產生式的右側只能是空串、一個終結符號或者一個非終結符號後隨一個終結符號;如果所有產生式的右側都不含初始符號 S ,規則 S -> ε 也允許出現。這種文法規定的語言可以被有限狀態自動機接受,也可以通過正則表達式來獲得。正規語言通常用來定義檢索模式或者程序設計語言中的詞法結構。
正規語言類包含於上下文無關語言類,上下文無關語言類包含於上下文相關語言類,上下文相關語言類包含於遞歸可枚舉語言類。這里的包含都是集合的真包含關系,也就是說:存在遞歸可枚舉語言不屬於上下文相關語言類,存在上下文相關語言不屬於上下文無關語言類,存在上下文無關語言不屬於正規語言類。
1)本題應該是--上下文無關文法
句子是產生式在推導時「僅僅有終結符」的任何一步
2)%mm%nn 是一個句子
由於下面一題的圖我等級不夠 不能貼圖 發你郵箱
⑼ 編譯原理文法問題,急急急
第一題
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
⑽ 幫我做下兩道簡單的《編譯原理》文法題目,在線等答案O(∩_∩)O謝謝!