① 編譯原理問題,高手進。
回答下列問題:(30分)
(6分)對於下面程序段
program test (input, output)
var i, j: integer;
procere CAL(x, y: integer);
begin
y:=y*y; x:=x-y; y:=y-x
end;
begin
i:=2; j:=3; CAL(i, j)
writeln(j)
end.
若參數傳遞的方法分別為(1)傳值、(2)傳地址,(3)傳名,請寫出程序執行的輸出結果。
答: (1) 3 (2) 16 (3) 16 (每個值2分)
(6分)計算文法G(M)的每個非終結符的FIRST和FOLLOW集合,並判斷該文法是否是LL(1)的,請說明理由。
G(M):
M → TB
T → Ba |
B → Db | eT |
D → d |
解答:
計算文法的FIRST和FOLLOW集合:(4分)
FIRST(M) = { a,b,e,d, } FIRST(T) = { a,b,e,d, }
FIRST(B) = {b,e,d, } FIRST(D) = {d,}
FOLLOW (M) = {#} FOLLOW (T) = { a,b,e,d,#}
FOLLOW (B) = {a,# } FOLLOW (D) = { b}
檢查文法的所有產生式,我們可以得到:
1. 該文法不含左遞歸,
2. 該文法中每一個非終結符M,T,B,D的各個產生式的候選首符集兩兩不相交。
3. 該文法的非終結符T、B和D,它們都有候選式,而且
FIRST(T)∩FOLLOW(T)={ a,b,e,d }≠
所以該文法不是LL(1)文法。(2分)
(4分)考慮下面的屬性文法
產 生 式 語 義 規 則
S→ABC
A→a
B→b
C→c B.u := S.u
A.u := B.v + C.v
S.v := A.v
A.v :=3*A.u
B.v := B.u
C.v := 1
畫出字元串abc的語法樹;
對於該語法樹,假設S.u的初始值為5,屬性計算完成後,S.v的值為多少。
答:(1) (2分)
(2) S.v的值為18 (2分)
(4分)運行時的DISPLAY表的內容是什麼?它的作用是什麼?
答:DISPLAY表是嵌套層次顯示表。每當進入一個過程後,在建立它的活動記錄區的同時建立一張嵌套層次顯示表diaplay.假定現在進入的過程層次為i,則它的diaplay表含有i+1個單元,自頂向下每個單元依次存放著現行層、直接外層、…、直至最外層(主程序,0層)等每層過程的最新活動記錄的起始地址。通過DISPLAY表可以訪問其外層過程的變數。
(5分)對下列四元式序列生成目標代碼:
A:=B*C
D:=E+A
G:=B+C
H:=G*D
其中,H在基本塊出口之後是活躍變數, R0和R1是可用寄存器。
答: 目標代碼序列
LD R0 B
MUL R0 C
LD R1 E
ADD R1 R0
LD R0 B
ADD R0 C
MUL R0 R1
ST R0 H
(5分)寫出表達式a+b*(c-d)對應的逆波蘭式、三元式序列和抽象語法樹。
答:
逆波蘭式:(abcd-*+) (1分)
三元式序列: (2分)
OP ARG1 ARG2
(1) - c d
(2) * b (1)
(3) + a (2)
抽象語法樹:(2分)
(8分)構造一個DFA,它接受={a,b}上所有包含ab的字元串。
答:
(2分)構造相應的正規式:(a|b)*ab(a|b)*
(3分)
a a
a b
b b
(3分)確定化:
I
{0,1,2} {1,2,3} {1,2}
{1,2,3} {1,2,3} {1,2,4,5,6}
{1,2} {1,2,3} {1,2}
{1,2,4,5,6} {1,2,3,5,6} {1,2,5,6}
{1,2,3,5,6} {1,2,3,5,6} {1,2,4,5,6}
{1,2,5,6} {1,2,3,5,6} {1,2,5,6}
b b
b a
a a a a
a b b
b
最小化:
{0,1,2} {3,4,5}
{0, 2},1, {3,4,5}
(6分)寫一個文法使其語言為L(G)={anbncm| m,n≥1,n為奇數,m為偶數}。
答:
文法G(S):
(8分)對於文法G(S):
1. 寫出句型b(Ma)b的最右推導並畫出語法樹。
2. 寫出上述句型的短語,直接短語和句柄。
答:
1. (4分)
2. (4分)
短語: Ma), (Ma), b(Ma)b
直接短語: Ma)
句柄: Ma)
(12分)對文法G(S):
S → a | ^ | (T)
T → T,S | S
(1) 構造各非終結符的FIRSTVT和LASTVT集合;
(2) 構造算符優先表;
(3) 是算符優先文法嗎?
(4) 構造優先函數。
答:
(1) (4分)
(2) (4分)
a ^ ( ) ,
a > >
^ > >
( < < < = <
) > >
, < < < > >
(3) 是算符優先文法,因為任何兩個終結符之間至多隻有一種優先關系。 (1分)
(4) 優先函數(3分)
a ^ ( ) ,
F 4 4 2 4 4
G 5 5 5 2 3
(8分)設某語言的do-while語句的語法形式為
S do S(1) While E
其語義解釋為:
針對自下而上的語法分析器,按如下要求構造該語句的翻譯模式,將該語句翻譯成四元式:
(1) 寫出適合語法制導翻譯的產生式;
(2) 寫出每個產生式對應的語義動作。
答:(1). 適合語法制導翻譯的文法(4分)
G(S):
R do
UR S(1) While
SU E
(2). (4分)
R do
{ R.QUAD:=NXQ }
UR S(1) While
{ U.QUAD:=R.QUAD;
BACKPATCH(S.CHAIN, NXQ) }
SU E
{ BACKPATCH(E.TC, U.QUAD);
S.CHAIN:=E.FC }
答案二:
(1) S do M1 S(1) While M2 E
M ε (4分)
(2) M ε { M.QUAD := NXQ } (4分)
S do M1 S(1) While M2 E
{
BACKPATCH(S(1).CHAIN, M2.QUAD);
BACKPATCH(E.TC, M1.QUAD);
S.CHAIN:=E. FC
}
(10分)將語句
while C>0 do if A B=0 then C:=C+D else C:=C*D
翻譯成四元式。
答:
100 (j>, C, 0, 102)
101 (j, -, -, 112)
102 (jnz, A, -, 106)
103 (j, -, -, 104)
104 (j=, B, 0, 106)
105 (j, -, -, 109)
106 (+, C, D, T1)
107 (:=, T1, -, C)
108 (j, -, -, 100)
109 (*, C, D, T2)
110 (:=, T2, -, C)
111 (j, -, -, 100)
112
(10分)設有基本塊如下:
T1:=3
T2:=A*B
T3:=9+T1
M:=A*B
T4:=C-D
L:=T3*T4
T2:=C+D
N:=T2
畫出DAG圖;
設L,M,N 是出基本塊後的活躍變數,請給出優化後的四元式序列。
答:
1. (6分)
L
*
T2,M T4 T2,N
* - +
T1 T3
3 A B 12 C D
2. (4分)
M:=A*B
S1:=C-D
L:=12*S1
N:=C+D
(8分)文法G(S)及其LR分析表如下,請給出串baba#的分析過程。
(1) S → DbB (2) D → d (3) D → ε
(4) B → a (5) B → Bba (6) B → ε
LR分析表
ACTION GOTO
b D a # S B D
0 r3 s3 1 2
1 acc
2 s4
3 r2
4 r6 S5 r6 6
5 r4 r4
6 s7 r1
7 S8
8 r5 r5
解答:
步驟 狀態 符號 輸入串
0 0 # baba#
1 02 #D baba#
2 024 #Db aba#
3 0245 #Dba ba#
4 0246 #DbB ba#
5 02467 #DbBb a#
6 024678 #DbBba #
7 0246 #DbB #
8 01 #S # acc
哈哈,估計認識!!
② 編譯原理求解答案
編譯原理是計算機軟體專業中的非常重要一門課程。例如:如何把我們編寫的高級語言源程序,翻譯成機器可執行的目標程序,這個就需要用到編譯原理技術。
但是學習編譯原理這門課程時,是需要頭腦中對編譯原理課程中涉及到的所有概念必須是相當清楚的,別人才能夠對你的這些問題進行准確的回答。而不是看到這些似曾親切的內容就敢於回答你的內容的。
故我個人的建議還是:你可以向專門講授編譯原理的老師請教你的問題。
以上就是我很多年前學習編譯原理的親身體會。
③ 編譯原理題目
習題一、單項選擇題
1、將編譯程序分成若干個「遍」是為了 。
a.提高程序的執行效率
b.使程序的結構更加清晰
c.利用有限的機器內存並提高機器的執行效率
d.利用有限的機器內存但降低了機器的執行效率
2、構造編譯程序應掌握 。
a.源程序 b.目標語言
c.編譯方法 d.以上三項都是
3、變數應當 。
a.持有左值 b.持有右值
c.既持有左值又持有右值 d.既不持有左值也不持有右值
4、編譯程序絕大多數時間花在 上。
a.出錯處理 b.詞法分析
c.目標代碼生成 d.管理表格
5、 不可能是目標代碼。
a.匯編指令代碼 b.可重定位指令代碼
c.絕對指令代碼 d.中間代碼
6、使用 可以定義一個程序的意義。
a.語義規則 b.詞法規則
c.產生規則 d.詞法規則
7、詞法分析器的輸入是 。
a.單詞符號串 b.源程序
c.語法單位 d.目標程序
8、中間代碼生成時所遵循的是- 。
a.語法規則 b.詞法規則
c.語義規則 d.等價變換規則
9、編譯程序是對 。
a.匯編程序的翻譯 b.高級語言程序的解釋執行
c.機器語言的執行 d.高級語言的翻譯
10、語法分析應遵循 。
a.語義規則 b.語法規則
c.構詞規則 d.等價變換規則
解答
1、將編譯程序分成若干個「遍」是為了使編譯程序的結構更加清晰,故選b。
2、構造編譯程序應掌握源程序、目標語言及編譯方法等三方面的知識,故選d。
3、對編譯而言,變數既持有左值又持有右值,故選c。
4、編譯程序打交道最多的就是各種表格,因此選d。
5、目標代碼包括匯編指令代碼、可重定位指令代碼和絕對指令代碼3種,因此不是目標代碼的只能選d。
6、詞法分析遵循的是構詞規則,語法分析遵循的是語法規則,中間代碼生成遵循的是語義規則,並且語義規則可以定義一個程序的意義。因此選a。
7、b 8、c 9、d 10、c
二、多項選擇題
1、編譯程序各階段的工作都涉及到 。
a.語法分析 b.表格管理 c.出錯處理
d.語義分析 e.詞法分析
2、編譯程序工作時,通常有 階段。
a.詞法分析 b.語法分析 c.中間代碼生成
d.語義檢查 e.目標代碼生成
解答
1.b、c 2. a、b、c、e
三、填空題
1、解釋程序和編譯程序的區別在於 。
2、編譯過程通常可分為5個階段,分別是 、語法分析 、代碼優化和目標代碼生成。 3、編譯程序工作過程中,第一段輸入是 ,最後階段的輸出為 程序。
4、編譯程序是指將 程序翻譯成 程序的程序。 解答
是否生成目標程序 2、詞法分析 中間代碼生成 3、源程序 目標代碼生成 4、源程序 目標語言
一、單項選擇題
1、文法G:S→xSx|y所識別的語言是 。
a. xyx b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法G描述的語言L(G)是指 。
a. L(G)={α|S+ ⇒α , α∈VT*} b. L(G)={α|S*⇒α, α∈VT*}
c. L(G)={α|S*⇒α,α∈(VT∪VN*)} d. L(G)={α|S+ ⇒α, α∈(VT∪VN*)}
3、有限狀態自動機能識別 。
a. 上下文無關文法 b. 上下文有關文法
c.正規文法 d. 短語文法
4、設G為算符優先文法,G的任意終結符對a、b有以下關系成立 。
a. 若f(a)>g(b),則a>b b.若f(a)<g(b),則a<b
c. a~b都不一定成立 d. a~b一定成立
5、如果文法G是無二義的,則它的任何句子α 。
a. 最左推導和最右推導對應的語法樹必定相同
b. 最左推導和最右推導對應的語法樹可能不同
c. 最左推導和最右推導必定相同
d. 可能存在兩個不同的最左推導,但它們對應的語法樹相同
6、由文法的開始符經0步或多步推導產生的文法符號序列是 。
a. 短語 b.句柄 c. 句型 d. 句子
7、文法G:E→E+T|T
T→T*P|P
P→(E)|I
則句型P+T+i的句柄和最左素短語為 。
a.P+T和i b. P和P+T c. i和P+T+i d.P和T
8、設文法為:S→SA|A
A→a|b
則對句子aba,下面 是規范推導。
a. SÞSAÞSAAÞAAAÞaAAÞabAÞaba
b. SÞSAÞSAAÞAAAÞAAaÞAbaÞaba
c. SÞSAÞSAAÞSAaÞSbaÞAbaÞaba
d. SÞSAÞSaÞSAaÞSbaÞAbaÞaba
9、文法G:S→b|∧(T)
T→T,S|S
則FIRSTVT(T) 。
a. {b,∧,(} b. {b,∧,)} c.{b,∧,(,,} d.{b,∧,),,}
10、產生正規語言的文法為 。
a. 0型 b. 1型 c. 2型 d. 3型
11、採用自上而下分析,必須 。
a. 消除左遞歸 b. 消除右遞歸 c. 消除回溯 d. 提取公共左因子
12、在規范歸約中,用 來刻畫可歸約串。
a. 直接短語 b. 句柄 c. 最左素短語 d. 素短語
13、有文法G:E→E*T|T
T→T+i|i
句子1+2*8+6按該文法G歸約,其值為 。
a. 23 B. 42 c. 30 d. 17
14、規范歸約指 。
a. 最左推導的逆過程 b. 最右推導的逆過程
c. 規范推導 d. 最左歸約的逆過程
[解答]
1、選c。
2、選a。
3、選c。
4、雖然a與b沒有優先關系,但構造優先函數後,a與b就一定存在優先關系了。所以,由f(a)>g)(b)或f(a)<g(b)並不能判定原來的a與b之間是否存在優先關系:故選c。
5、如果文法G無二義性,則最左推導是先生長右邊的枝葉:對於d,如果有兩個不同的是了左推導,則必然有二義性。故選a。
6、選c。
7、由圖2-8-1的語法樹和優先關系可以看出應選b。
8、規范推導是最左推導,故選d。
9、由T→T,…和T→(… 得FIRSTVT(T))={(,,)};
由T→S得FIRSTVT(S)⊂FIRSTVT(T),而FIRSTVT(S)={b,∧,(};即
FIRSTVT(T)={b,∧,(,,}; 因此選c。
10、d 11、c 12、b 13、b 14、b
二、多項選擇題
1、下面哪些說法是錯誤的 。
a. 有向圖是一個狀態轉換圖 b. 狀態轉換圖是一個有向圖
c.有向圖是一個DFA d.DFA可以用狀態轉換圖表示
2、對無二義性文法來說,一棵語法樹往往代表了 。
a. 多種推導過程 b. 多種最左推導過程 c.一種最左推導過程
d.僅一種推導過程 e.一種最左推導過程
3、如果文法G存在一個句子,滿足下列條件 之一時,則稱該文法是二義文法。
a. 該句子的最左推導與最右推導相同
b. 該句子有兩個不同的最左推導
c. 該句子有兩棵不同的最右推導
d. 該句子有兩棵不同的語法樹
e.該句子的語法樹只有一個
4、有一文法G:S→AB
A→aAb|ε
B→cBd|ε
它不產生下面 集合。
a. {anbmcndm|n,m≥0} b. {anbncmdm|n,m>0}
c. {anbmcmdn|n,m≥0} d. {anbncmdm|n,m≥0}
e. {anbncndn|n≥0}
5、自下而上的語法分析中,應從 開始分析。
a. 句型 b. 句子 c. 以單詞為單位的程序
d. 文法的開始符 e. 句柄
6、對正規文法描述的語言,以下 有能力描述它。
a.0型文法 b.1型文法 c.上下文無關文法 d.右線性文法 e.左線性文法
解答 1、e、a、c 2、a、c、e 3、b、c、d 4、a、c 5、b、c 6、a、b、c、d、e
三、填空題
1、文法中的終結符和非終結符的交集是 。詞法分析器交給語法分析器的文法符號一定是 ,它一定只出現在產生式的 部。
2、最左推導是指每次都對句型中的 非終結符進行擴展。
3、在語法分析中,最常見的兩種方法一定是 分析法,另一是 分析法。
4、採用 語法分析時,必須消除文法的左遞歸。
5、 樹代表推導過程, 樹代表歸約過程。
6、自下而上分析法採用 、歸約、錯誤處理、 等四種操作。
7、Chomsky把文法分為 種類型,編譯器構造中採用 和 文法,它們分別產生 和 語言,並分別用 和 自動機識別所產生的語言。
解答 1、空集 終結符 右
2、最左
3、自上而上 自下而上
4、自上而上
5、語法 分析
6、移進 接受
7、4 2 型 3型 上下文無關語言 正規語言 下推自動機 有限
四、判斷題
1、文法 S→aS|bR|ε描述的語言是(a|bc)* ( )
R→cS
2、在自下而上的語法分析中,語法樹與分析樹一定相同。 ( )
3、二義文法不是上下文無關文法。 ( )
4、語法分析時必須先消除文法中的左遞歸。 ( )
5、規范歸約和規范推導是互逆的兩個過程。 ( )
6、一個文法所有句型的集合形成該文法所能接受的語言。 ( )
解答 1、對 2、錯 3、錯 4、錯 5、錯 6、錯
五、簡答題
1、句柄 2、素短語 3、語法樹 4、歸約 5、推導
[解答]
1、句柄:一個句型的最左直接短語稱為該句型的句柄。
2、素短語:至少含有一個終結符的素短語,並且除它自身之外不再含任何更小的素短語。
3、語法樹:滿足下面4個條件的樹稱之為文法G[S]的一棵語法樹。
①每一終結均有一標記,此標記為VN∪VT中的一個符號;
②樹的根結點以文法G[S]的開始符S標記;
③若一結點至少有一個直接後繼,則此結點上的標記為VN中的一個符號;
④若一個以A為標記的結點有K個直接後繼,且按從左至右的順序,這些結點的標記分別為X1,X2,…,XK,則A→X1,X2,…,XK,必然是G的一個產生式。
4、歸約:我們稱αγβ直接歸約出αAβ,僅當A→γ 是一個產生式,且α、β∈(VN∪VT)*。歸約過程就是從輸入串開始,反復用產生式右部的符號替換成產生式左部符號,直至文法開始符。
5、推導:我們稱αAβ直接推出αγβ,即αAβÞαγβ,僅當A→ γ 是一個產生式,且α、β∈(VN∪VT)*。如果α1Þα2Þ…Þαn,則我們稱這個序列是從α1至α2的一個推導。若存在一個從α1αn的推導,則稱α1可推導出αn。推導是歸約的逆過程。
六、問答題
1、給出上下文無關文法的定義。
[解答]
一個上下文無關文法G是一個四元式(VT,VN,S, P),其中:
●VT是一個非空有限集,它的每個元素稱為終結符號;
●VN是一個非空有限集,它的每個元素稱為非終結符號,VT∩VN=Φ;
●S是一個非終結符號,稱為開始符號;
●P是一個產生式集合(有限),每個產生式的形式是P→α,其中,P∈VN,
α∈(VT∪VN)*。開始符號S至少必須在某個產生式的左部出現一次。
2、文法G[S]:
S→aSPQ|abQ
QP→PQ
bP→bb
bQ→bc
cQ→cc
(1)它是Chomsky哪一型文法?
(2)它生成的語言是什麼?
[解答]
(1)由於產生式左部存在終結符號,且所有產生式左部符號的長度均小於等於產生式右部的符號長度,所以文法G[S]是Chomsky1型文法,即上下文有關文法。
(2)按產生式出現的順序規定優先順序由高到低(否則無法推出句子),我們可以得到:
SÞabQÞabc
SÞaSPQÞaabQPQÞaabPQQÞaabbQQÞaabbcQÞaabbcc
SÞaSPQÞaaSPQPQÞaaabQPQPQÞaaabPQQPQÞaaabPQPQQÞaaaPPQQQÞ
aaabbPqqqÞaaabbQQQÞaaabbbcQQÞaaabbbccQÞaaabbbccc
……
於是得到文法G[S]生成的語言L={anbncn|n≥1}
3、按指定類型,給出語言的文法。
L={aibj|j>i≥1}的上下文無關文法。
【解答】
(1)由L={aibj|j>i≥1}知,所求該語言對應的上下文無關文法首先應有S→aSb型產生式,以保證b的個數不少於a的個數;其次,還需有S→Sb或S→bS型的產生式,用以保證b的個數多於a的個數;也即所求上下文無關文法G[S]為:
G[S]:S→aSb|Sb|b
4、有文法G:S→aAcB|Bd
A→AaB|c
B→bScA|b
(1)試求句型aAaBcbbdcc和aAcbBdcc的句柄;
(2)寫出句子acabcbbdcc的最左推導過程。
【解答】(1)分別畫出對應兩句型的語法樹,如圖2-8-2所示
句柄:AaB Bd
圖2-8-2 語法樹
(2)句子acabcbbdcc的最左推導如下:
SÞaAcBÞaAaBcBÞacaBcBÞacabcBÞacabcbScAÞacabcbBdcA
ÞacabcbbdcAÞacabcbbdcc
5、對於文法G[S]:
S→(L)|aS|a L→L, S|S
(1)畫出句型(S,(a))的語法樹。(2)寫出上述句型的所有短語、直接短語、句柄和素短語。
【解答】
(1)句型(S,(a))的語法樹如圖2-8-3所示
(2)由圖2-8-3可知:
①短語:S、a、(a)、S,(a)、(S,(a));
②直接短語:a、S;
③句柄:S;
④素短語:素短語可由圖2-8-3中相鄰終結符之間的優先關系求得,即;
因此素短語為a。
6、考慮文法G[T]:
T→T*F|F
F→F↑P|P
P→(T)|i
證明T*P↑(T*F)是該文法的一個句型,並指出直接短語和句柄。
【解答】
首先構造T*P↑(T*F)的語法樹如圖2-8-4所示。
由圖2-8-4可知,T*P↑(T*F)是文法G[T]的一個句型。
直接短語有兩個,即P和T*F;句柄為P。
一、單項選擇題
1、詞法分析所依據的是 。
a. 語義規則 b. 構詞規則 c. 語法規則 d. 等價變換規則
2、詞法分析器的輸出結果是 。
a. 單詞的種別編碼 b. 單詞在符號表中的位置
c. 單詞的種別編碼和自身值 d. 單詞自身值
3、正規式M1和M2等價是指 。
a. M1和M2的狀態數相等 b. M1和M2的有向弧條數相等
c. M1和M2所識別的語言集相等 d. M1和M2狀態數和有向弧條數相等
4、狀態轉換圖(見圖3-6-1)接受的字集為 。
a. 以 0開頭的二進制數組成的集合 b. 以0結尾的二進制數組成的集合
c. 含奇數個0的二進制數組成的集合 d. 含偶數個0的二進制數組成的集合
5、詞法分析器作為獨立的階段使整個編譯程序結構更加簡潔、明確,因此, 。
a. 詞法分析器應作為獨立的一遍 b. 詞法分析器作為子程序較好
c. 詞法分析器分解為多個過程,由語法分析器選擇使用 d. 詞法分析器並不作為一個獨立的階段
解答 1、b 2、c 3、c 4、d 5、b
二、多項選擇題
1、在詞法分析中,能識別出 。
a. 基本字 b. 四元式 c. 運算符
d. 逆波蘭式 e. 常數
2、令∑={a,b},則∑上所有以b開頭,後跟若干個ab的字的全體對應的正規式為 。
a. b(ab)* b. b(ab)+ c.(ba)*b
d. (ba)+b e. b(a|b)
解答 1、a、c、e 2、a、b、d
三、填空題
1、確定有限自動機DFA是 的一個特例。
2、若二個正規式所表示的 相同,則認為二者是等價的。
3、一個字集是正規的,當且僅當它可由 所 。
解答 1、NFA 2、正規集 3、DFA(NFA)所識別
四、判斷題
1、一個有限狀態自動機中,有且僅有一個唯一終態。 ( )
2、設r和s分別是正規式,則有L(r|s)=L(r)|L(s)。 ( )
3、自動機M和M′的狀態數不同,則二者必不等價。 ( )
4、確定的自動機以及不確定的自動機都能正確地識別正規集。 ( )
5、對任意一個右線性文法G,都存在一個NFA M,滿足L(G)=L(M)。 ( )
6、對任意一個右線性文法G,都存在一個DFA M,滿足L(G)=L(M)。 ( )
7、對任何正規表達式e,都存在一個NFA M,滿足L(G)=L(e)。 ( )
8、對任何正規表達式e,都存在一個DFA M,滿足L(G)=L(e)。 ( )
解答 1 、2、3、錯 4、5、6、7、8、正確
五、基本題
1、設M=({x,y}, {a,b}, f,x,{y})為一非確定的有限自動機,其中f定義如下:
f(x,a)={x,y} f(x,b)={y}
f(y,a)=φ f(y,b)={x,y}
試構造相應的確定有限自動機M′。
解答:對照自動機的定義M=(S,Σ,f,S0,Z),由f的定義可知f(x,a)、f(y,b)均為多值函數,所以是一非確定有限自動機,先畫出NFA M相應的狀態圖,如圖3-6-2所示。
用子集法構造狀態轉換矩陣表3-6-3所示。
I Ia Ib
{x} {x,y} {y}
{y} — {x,y}
{x,y} {x,y} {x,y}
將轉換矩陣中的所有子集重新命名而形成表3-6-4所示的狀態轉換矩陣。
表3-6-4 狀態轉換矩陣
a b
0 2 1
1 — 2
2 2 2
即得到M′=({0,1,2}, {a,b}, f,0, {1,2}),其狀態轉換圖如圖3-6-5所示。
將圖3-6-5的DFA M′最小化。首先,將M′的狀態分成終態組{1,2}與非終態組{0};其次,考察{1,2}。由於{1,2}a={1,2}b={2}⊂{1,2},所以不再將其劃分了,也即整個劃分只有兩組{0},{1,2}:令狀態1代表{1,2},即把原來到達2的弧都導向1,並刪除狀態2。最後,得到如圖3-6-6所示化簡DFA M′。
2、對給定正規式b*(d|ad)(b|ab)+,構造其NFA M;
解答:首先用A+=AA*改造正規式得:b*(d|ad)(b|ab)(b|ab)*;其次,構造該正規式的NFA M,如圖3-6-7所示。
求採納為滿意回答。
④ 編譯原理follow集與first集的計算
下面我將介紹一下我關於LL(1)文法部分的計算文法非終結符First集以及Follow集兩個知識點的理解。
首先是First集的計算部分,計算First集首先看我們原文法的左邊,原文法左邊不重復的都要進行First集的計算,計算時具體有以下三種情況:
(1)先看產生式後面的第一個符號,如果是終結符,那就可以直接把它寫到這個產生式的First集中,例如:產生式為M->nDc,那在First集中我們就可以直接寫上First (M)={ n };
(2)如果產生式後面的第一個符號是非終結符,就看這個非終結符的產生式,看的時候同樣利用前面的兩種看法;但是當產生式為ε時,則需要把ε帶入到待求First集的元素的產生式中再判斷。例如:A->Bc; B->aM;B->ε,求First(A)時,我們看到A的第一個產生式中的第一個符號是B,B是一個非終結符,所以我們就要接著看B的產生式,B的第一個產生式的第一個符號為a,a是一個終結符,直接把a寫入First(A),B的第二個產生式為ε,把ε帶入A->Bc中,A->c(注意:如果將B->ε帶入表達式後A的產生式為A->ε,ε不可以忽略),c是終結符,所以把c也寫入First(A),最後First (A)={ a,c }。
(3)當產生式右邊全為非終結符,且兩個非終結符又都可以推出ε時,我們需要把這個產生式的所有情況都列出來,再分析。例如:A->BC;B->b|ε;C->c|ε。我們把A的所有產生式利用上述兩種方法列出來就是A->bc,A->b;A->c,A->ε;最後First (A)={b,c, ε}。
接下來介紹一下Follow集的部分,先簡單介紹一下計算Follow集的大致規則。比如我們要求Follow(X),文法中多個產生式中含有X,則需要考慮多種情況,以下是具體計算時的三種情況:
(1)文法開始符:所有文法開始符的Follow集中都有一個#。
(2)S->αB的形式:求Follow(B),因為B的後面為空,把Follow(S)寫入B的Follow集中。
(3)S->αBβ的形式:求Follow(B),B後部不為空。
①當β是終結符時,直接把β寫入Follow(B)。
②當β是非終結符時,將First (β)(如果First(B)中有ε,就把ε刪掉)寫入Follow(B)中。(需要注意的是:如果β->ε,那麼原產生式就變成了S->αB,也就是第二種情況,這兩種情況都要算在Follow(B)中)。
⑤ C++里怎麼計算代數式
你的意思是說做一個計算器之類的東西吧。。。
明白了說,比較的麻煩一占,但也不是很難。。
我旁邊的同學說了,要用兩個棧,一個棧存入操作數,一個棧存放操作符,判斷操作符,如果滿足條件立即彈出,然後取操作數,如果遇到一些特定的操作符(比如說括弧)就要等 下一個操作符~~~~
稍顯有點麻煩。。。。
⑥ 編譯原理與技術 設有文法G:S→tAdB A→aC B→b
設有文法G: S→tAdB A→aC B→b C→cC |ε 計算該文法所有非終結符的FIRST、FOLLOW集合
⑦ 2021大學生計算機實驗總結報告
實驗相對於每個人來說都有著特殊的意義,一般意義上來說他肯定是都會有不一樣的 心得體會 ,對於那些學習過實驗後的人來說記錄下這些心得體會是十分重要的,寫一份實驗心得體會他不僅僅能抒發自己的情感,與此同時我們還能學會做人,下面就讓我帶你去看看大學生計算機實驗 總結 報告 範文 5篇1,望能幫助到大家!
更多的計算機實驗總結請點擊下方↓↓↓
★計算機實訓總結範文5篇★
★大學生計算機實習總結報告★
★計算機實訓報告範文精選5篇★
★大學生計算機實習報告總結3000字★
計算機實驗報告1
一、實驗目的
1.掌握Word文檔的創建、並按指定路徑、指定文件名保存文件。
2.掌握文檔中文字的快速輸入並設置:文字的字型大小、字體、字顏色、行間距、字間距等格式。
3.掌握文檔中段落的分欄、首字下沉、底紋、邊框、頁眉頁腳等的設置 方法 。
4.掌握文檔中插入藝術字、剪貼畫、圖片及公式的方法、並設置其版式及圖片文字說明。 5.掌握規則、非規則表格的設計。
5.掌握使用Word軟體對論文、科技 文章 進行排版。
6.掌握文檔中頁面設置、文字的字體字型大小、顏色、行間距、字間距的設置。 8.掌握分頁、分節要點,按不同章節的要求,設置不同的頁眉、頁腳。
7.掌握正文及三級標題的設置,並自動生成目錄(或有修改後同步該目錄)。 10.掌握論文封面的設計。
二、實驗內容
1.單文檔圖文混排。
2.長文檔排版。
三、實驗過程及結果
計算機系統由計算機系統賴以工作的實體。後者是各種程序和文件,用於指揮全系統按指定的要求進行工作。
通常所說的計算機均指數字計算機,其運算處理的數據,是用離散數字量表示的。而模擬計算機運算處理的數據是用連續模擬量表示的。模擬機和數字機相比較,其速度快、與物理設備介面簡單,但精度低、使用困難、穩定性和可靠性差、價格昂貴。故模擬機已趨淘汰,僅在要求響應速度快,但精度低的場合尚有應用。把二者優點巧妙結合而構成的混合型計算機,尚有一定的生命力。
硬體和軟體兩部分組成。硬體包括中央處理機、存儲器和外部設備等;軟體是計算機的運行程序和相應的文檔。計算機系統具有接收和存儲信息、按程序快速計算和判斷並輸出處理計算機系統由硬體(子)系統和軟體(子)系統組成。前者是藉助電、磁、光、機械等原理構成的各種物理部件的有機組合,是電子計算機分數字和模擬兩類。
計算機實驗報告2
計算機網路課程的實驗不同於以前做過的C語言上機實驗和數據結構上機實驗,後兩者都是編程的,要求的是個人對基礎知識的掌握和熟練的應用,簡單地說就是一個人的戰場。而計算機網路課程則是一門操作性很強的課程,很多時候它更要求我們注重團隊之間的交流與配合,而不是獨自完成。
第一次實驗是雙絞線的製作,通過這個實驗讓我學到了如何製作雙絞線,也是我大學期間第一次做操作性這么強的實驗。以前的實驗都是編程,而這一次的實驗卻是完完全全地讓我們自己動手。剝皮->排序->理直->剪齊->插入->壓線,雖然實驗過去了有一段時間,但是還是能清楚地記得做法。雖然最後我們的實驗沒有成功,但是這並不代表我們沒有收獲。
第二次的實驗是Linu__的使用與DNS伺服器的配置與管理。在課堂上,由於機子的問題,Linu__不能成功打開。於是就學習了一下DNS伺服器的配置和管理。通過學習,我知道了如何添加DNSZone,如何添加主要區域,正向搜索和反向搜索,添加DNSDomain,如何設置DNS伺服器的動態更新,如何修改區域傳輸的通知列表等等。關於Linu__,下課後仍然不死心,自己在網上下了個Linu__ 操作系統 ,然後在同學的指導下一步步地裝好了。雖然說最後沒怎麼用,自己也不會用。但是當打開操作系統的那一瞬間,那個華麗麗的界面還是讓我深深地震撼了一把。不得不感嘆Linu__真的好高級。我相信,不久之後,我一定可以熟練操作Linu__系統的。
第三次試驗是有關聊天軟體和點歌軟體的配置和運用。在這個實驗里,我們開始有了更明確的分工,一個同學做客戶端,一個同學做服務端,在做這些之前,要首先修改我們的IP。但是後來我想,其實根本沒必要修改IP,實驗課程裡面要求我們修改IP,不過是讓我們對此更熟悉而已。在這次的實驗中,我扮演的是服務端的角色,按照實驗要求一步一步地操作,我們成功地用RT__軟體語音聊天。也成功地用DJ點歌服務為對方點歌。其實這次實驗給我的感覺,有點像運營商與用戶的關系,運營商通過相關設置,讓用戶可以訪問其客戶端進行相關的操作。這次的實驗為之後的模擬網站發布奠定了一定的基礎。
隨後的幾周,我們又進行了網站發布,模擬小型區域網的實驗。通過這些實驗,讓我們對身邊的計算機網路有了更為客觀、形象、具體的認識。而不是僅僅限於書本上的文字表達,或者是思維中模糊的想像。這門實驗課程,不僅是對理論課程的鞏固,更是對理論課程的擴充。除此之外,在實驗過程了,我們學會了相互合作,相互幫助,了解了團隊合作的重要性,也知道了怎麼樣和團隊成員之間協調。要想實驗成功,必須要確保每一個環節,每一個團隊成員負責的版塊都沒有出錯,合起來,整個實驗的最終目標才可以實現。
計算機實驗報告3
課程:大學計算機基礎 班級 : __________ 學號:____ 姓名:______組別: 同組者姓名: 儀器編號: 實驗日期:
實驗 windows 2000 操作[實驗目的]1. 掌握windows 2000的啟動和退出。熟悉windows 2000的桌面環境,掌握「回收站」、任務欄、幫助菜單的使用。2. 掌握windows 2000的窗口、菜單以及對話框的操作。掌握「資源管理器」和「我的電腦」的使用。3. 掌握文件與文件夾的創建、移動、復制等基本操作。4. 掌握應用程序的安裝與刪除、移動與退出,快捷方式的創建與刪除。5. 掌握windows 2000系統的設置,了解windows2000 附件的使用。[實驗環境]硬體:pentium 以上的計算機。軟體:windows2000 操作系統。[實驗內容]
見附件[實驗結果]1.建立了如下圖所示目錄樹:d: user new1.cod a user2 b bbb new2.docbbb2.完成了「計算機」快捷方式的創建。3.完成了控制面板中顯示、區域選項等屬性的設置。 實驗指導教師(簽名) 實驗成績 實驗報告批改日期: 實驗內容:2.(1)打開b文件夾 選中bbb 單擊右鍵後選擇「復制」命令 打開user文件夾 在空白處單擊右鍵後選擇「粘貼」命令。 (2)打開user文件夾 選中b 單擊右鍵後選擇「剪切」命令 打開a文件夾 在空白處單擊右鍵後選擇「粘貼」命令。 (3)打開user文件夾 選中c 單擊右鍵後選擇「刪除」命令。3.(1)單擊「開始」按鈕後選擇「搜索/文件或文件夾」命令 在搜索對話框的文件名欄中輸入「calc.e__e」 單擊「搜索」按鈕 選中找到的程序 單擊右鍵選擇「發送到桌面快捷方式」。 (2)選中桌面上的「calc.e__e」快捷圖標 右鍵單擊後選擇「重命名」 輸入「計算器」。(3)選中桌面「計算器」快捷圖標 按滑鼠左鍵拖動到「開始」菜單的「程序」選項中。(4)選中桌面上的「計算器」快捷圖標 按滑鼠左鍵拖動到「回收站」圖標上 在確認對話框中單擊「是」。4.(1)打開「控制面板」窗口 雙擊 顯示器 圖標 單擊「屏幕保護程序」選項卡 在「屏幕保護程序」下拉列表框中選擇「滾動字幕」 單擊設置按鈕 出現的對話框分別做相應的設置 單擊「應用」按鈕 單擊「確定」按鈕。 (2)打開「控制面板」窗口 雙擊顯示器圖標 單擊「圖案」按鈕 在圖案列表框中選擇「clouds」 在「顯示圖片」列表框中選擇「居中」 單擊「應用」 單擊「確定」。 (3)打開「控制面板」窗口 雙擊「區域選項」圖標 單擊「貨幣」選項卡 在「貨幣符號」下拉列表框中選擇「$」 在「貨幣正數格式」下拉列表框中選擇「¥1.1」 在「貨幣負數格式」下拉列表框中選擇「-¥1.1」 單擊「應用」按鈕 單擊「確定」按鈕。(4)打開「控制面板」窗口 雙擊「區域選項」圖標 單擊「數字」選項卡 在「小數點後面的位數」下拉列表框中選擇「2」 在「數字分組符號」下拉列表框中選擇「,」 在「組中數字個數」下拉列表框中選擇「123,456,789」 單擊「應用」按鈕 單擊「確定」按鈕。(5)打開「控制面板」窗口 雙擊「區域選項」圖標 單擊「日期」選項卡 在「短日期格式」下拉列表框中選擇「yy-mm-dd」 單擊「應用」按鈕 單擊「確定」按鈕。(6) 單擊「時間」選項卡 在「時間格式」下拉列表框中選擇「hh:mm:ss」 在「上午格式」下拉列表框中選擇「am」 在「下午格式」下拉列表框中選擇「pm」 單擊「應用」按鈕 單擊「確定」按鈕。(7)打開「控制面板」窗口 雙擊「任務欄和開始菜單」圖標 在「自動隱藏任務欄」單選按鈕前打鉤 去掉「顯示時鍾」單選按鈕前的鉤 單擊「應用」按鈕 單擊「確定」按鈕。5.(1)單擊「開始」菜單 選擇「程序/附件/畫圖」打開畫圖程序 按要求畫一副風景圖。 (2)在「畫圖」窗口中單擊「a」按鈕 輸入文字「這是我的家」(3)單擊「文件/保存」菜單 在「文件名」文本框中輸入「我的家 」存檔 (4)打開一副圖片 按[alt]+[print screen] 打開「畫圖」程序 單擊「文件/新建」菜單 在圖紙的空白出單擊右鍵選擇「粘貼」 單擊「文件/保存」菜單 在「文件名」文本框中輸入「截圖 」存檔。
計算機實驗報告4
計算機網路課程實訓已經結束幾天了.實訓期間,讓我學到了很多東西,不僅使我在理論上對網路有了全新的認識,在實踐能力上也得到了提高,真正地做到了學以致用,更學到了很多做人的道理,對我來說受益非淺。除此以外,我還學會了如何更好地與別人溝通,如何更好地去陳述自己的觀點,如何說服別人認同自己的觀點。第一次親身感受到理論與實際的相結合,讓我大開眼界。也是對以前所學知識的一個初審吧!這次實訓對於我以後學習、找工作也真是受益菲淺,在短短的幾天中相信這些寶貴的 經驗 會成為我今後成功的重要的基石。
作為一名大一的學生,經過差不多一年的在校學習,對網路有了理性的認識和理解。所以在實訓之前,網路對我來說是比較抽象的,在這次實訓中,是一次比較真實的接觸網路。讓我們親身體會了什麼是網路,以及計算機軟體、硬體等等。這次實訓也讓我深刻了解到,不管在工作中還是在生活中要和老師,同學保持良好的關系是很重要的。三人行必有我師,其實同學也是我們的老師不懂可以相互問。在這幾天的實訓中可以說是我們上大學以來學的最多有關專業的知識,比如說:虛擬機VMwareWorkstation、區域網聯網實踐、WindowsServer2003基礎、Linu__網路操作系統、網路操作系統綜合實訓、網路操作系統綜合實訓等等。這次實訓我們真正的學到了技術,這些知識基礎而富有內涵有助於我們專業知識的入門,更有助於我們未來的發展。
這次實訓我們收獲很大,對於剛入門的我們一切都是那麼的陌生。
在此期間老師給我們點起了一盞燈指引我們走向光明,這樣的情況下我們也會面對許許多多的困難,這個時候我們感受到了集體力量的偉大,我們互幫互助共同完成了實訓工作。我們在虛擬機上裝系統進行雙機互聯,我們一起裝系統一起互 相學 習,我們一起感受成功的快樂,這一刻我們共同成長。
俗話說:走過去前面依然是片藍天,每天的太陽都是新的。相反,瞻前顧後,畏首畏尾,往往會導致自我封閉錯失良機,最終會導致止步不前一事無成。「只有相信自己,別人才能相信你,才能給你機會。」絕對是至理 名言 。
在做調研的時候也是一樣,我們擁有了自信去敲門並從我們的行動中表現出來,當別人從我們身上眼裡看到這種自信時候,他們也就相信了我們自身的能力,就會給我們機會,也就會配合我們要做的事情,並樂意去做的更好;反之如果你表現的畏首畏尾的話,讓他們看不到我們自身的能力,給他們一瓶子不滿半瓶子逛盪的感覺,而且還顯得那麼幼稚那麼的不穩重,所以就會對我們的請求不屑一顧或者隨便找個借口把你打發走,而這正是我們做事情所不願意看到的。所以當一個人擁有自信的時候一切都再不那麼遙遠!
所以說無論做什麼事我們都要充滿自信地去探索去摸索敢於嘗試,真誠合作!
計算機實驗報告5
一、《軟體技術基礎》上機實驗內容
1.順序表的建立、插入、刪除。
2.帶頭結點的單鏈表的建立(用尾插法)、插入、刪除。
二、提交到個人10m硬碟空間的內容及截止時間
1.分別建立二個文件夾,取名為順序表和單鏈表。
2.在這二個文件夾中,分別存放上述二個實驗的相關文件。每個文件夾中應有三個文件(.c文件、.obj文件和.e__e文件)。
3. 截止時間:12月28日(18周周日)晚上關機時為止,屆時伺服器將關閉。
三、實驗報告要求及上交時間(用a4紙列印)
1.格式:
《計算機軟體技術基礎》上機實驗報告
用戶名se________ 學號姓名 學院
①實驗名稱:
②實驗目的:
③演算法描述(可用文字描述,也可用流程圖):
④源代碼:(.c的文件)
⑤用戶屏幕(即程序運行時出現在機器上的畫面):
2.對c文件的要求:
程序應具有以下特點:a可讀性:有注釋。
b交互性:有輸入提示。
c結構化程序設計風格:分層縮進、隔行書寫。
3. 上交時間:12月26日下午1點-6點,工程設計中心三樓教學組。 請注意:過時不候喲!
四、實驗報告內容
0.順序表的插入。
1. 順序表的刪除。
2.帶頭結點的單鏈表的插入。
3. 帶頭結點的單鏈表的刪除。
注意:1. 每個人只需在實驗報告中完成上述4個項目中的一個,具體安排為:將自己的序號對4求余,得到的數即為應完成的項目的序號。
例如:序號為85的同學,85%4=1,即在實驗報告中應完成順序表的刪除。
2. 實驗報告中的源代碼應是通過編譯鏈接即可運行的。
3. 提交到個人空間中的內容應是上機實驗中的全部內容。
大學生計算機實驗 總結報告 相關文章:
★ 計算機實訓總結範文5篇
★ 大學生計算機實訓心得體會
★ 大學生計算機專業實習報告範文5篇
★ 計算機實訓報告範文精選5篇
★ 計算機網路個人實習總結
★ 計算機實踐報告範文3000字3篇
★ 大學生計算機實習報告總結3000字
★ 計算機實習報告範文5篇
★ 大學生計算機實習報告總結3000字(3)
★ 大學生計算機實訓心得體會(2)
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();⑧ 老師要求小菜使用面向對象的思想編寫一個計算器,可以實現兩個數的加、減、乘、除運算
第二天。
小菜問道:「你說計算器這樣的小程序還可以用到面向對象三大特性?繼承和多態怎麼可能用得上,我實在不能理解。」
大鳥:「小菜很有鑽研精神嘛,好,今天我讓你功力加深一級。你先要考慮一下,你昨天寫的這個代碼,能否做到很靈活的可修改和擴展呢?」
小菜:「我已經把業務和界面分離了呀,這不是很靈活了嗎?」
大鳥:「那我問你,現在如果我希望增加一個開根(sqrt)運算,你如何改?」
小菜:「那隻需要改Operation類就行了,在switch中加一個分支就行了。」
大鳥:「問題是你要加一個平方根運算,卻需要讓加減乘除的運算都得來參與編譯,如果你一不小心,把加法運算改成了減法,這豈不是大大的糟糕。打個比方,如果現在公司要求你為公司的薪資管理系統做維護,原來只有技術人員(月薪),市場銷售人員(底薪+提成),經理(年薪+股份)三種運算演算法,現在要增加兼職工作人員(時薪)的演算法,但按照你昨天的程序寫法,公司就必須要把包含原三種演算法的運算類給你,讓你修改,你如果心中小算盤一打,『TMD,公司給我的工資這么低,我真是郁悶,這下有機會了』,於是你除了增加了兼職演算法以外,在技術人員(月薪)演算法中寫了一句
if (員工是小菜)
{
salary = salary * 1.1;
}
那就意味著,你的月薪每月都會增加10%(小心被抓去坐牢),本來是讓你加一個功能,卻使得原有的運行良好的功能代碼產生了變化,這個風險太大了。你明白了嗎?」
小菜:「哦,你的意思是,我應該把加減乘除等運算分離,修改其中一個不影響另外的幾個,增加運算演算法也不影響其他代碼,是這樣嗎?」
大鳥:「自己想去吧,如何用繼承和多態,你應該有感覺了。」
小菜:「OK,我馬上去寫。」
Operation運算類
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
public virtual double GetResult()
{
double result = 0;
return result;
}
}
加減乘除類
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
class OperationSub : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
class OperationMul : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
class OperationDiv : Operation
{
public override double GetResult()
{
double result = 0;
if (NumberB==0)
throw new Exception("除數不能為0。");
result = NumberA / NumberB;
return result;
}
}
小菜:「大鳥哥,我按照你說的方法寫出來了一部分,首先是一個運算類,它有兩個Number屬性,主要用於計算器的前後數,然後有一個虛方法GetResult(),用於得到結果,然後我把加減乘除都寫成了運算類的子類,繼承它後,重寫了GetResult()方法,這樣如果要修改任何一個演算法,就不需要提供其他演算法的代碼了。但問題來了,我如何讓計算器知道我是希望用哪一個演算法呢?」
⑨ 編譯原理:考慮文法G[S]
考慮文法:
(1)消去左遞歸後:
S→a|∧|(T)
T→ST』
T』 →,ST』|ε
(2)計算每個非終結符的FIRST集合和FOLLOW集合:
FIRST(S)={a,∧,(}
FIRST(T)={ a,∧,(}
FIRST(T』)={,ε}
FOLLOW(S)={,#}
FOLLOW(T)={ )}
FOLLOW(T』)={ )}
預測分析表如下:
\x09a\x09∧\x09(\x09)\x09,\x09#
S\x09S→a\x09S→∧\x09S→(T)\x09\x09\x09
T\x09T→ST』\x09T→ST』\x09T→ST』\x09\x09\x09
T』\x09\x09\x09\x09T』 →ε\x09T』 →,ST』\x09
構造的預測分析表中沒有多重入口,所以改造後的文法是LL(1)文法.