第二章複習題
單選
-
對於文法G[Z],已知u是句型,則判斷(D)是正確的。
A 只要使用規範推導,無論如何一定可以從Z推導出u
B 只要依據產生式進行規範歸約,則u一定可以歸約成Z
C 上面的A和B都是對的
D 上面的A和B都是錯的
-
由“非終結符–>符號串”這種產生式構成的文法是(C)。
A 0型語法
B 1型文法
C 2型文法
D 3型文法
-
二義文法是指(D)。
A 對應於兩棵不同語法樹的文法
B 對應於兩種不同推導的文法
C 文法中任何一個非終結符,都存在以它爲左部的兩個不同產生式
D A、B、C都是錯的
-
文法G[Z]和語言L(G[Z])存在如下關係:(C)。
A 一一對應,一個文法對應唯一的語言,並且,一個語言對應唯一的文法
B 一個語言對應唯一的文法,反之則不然
C 一個文法對應唯一的語言,反之則不然
D 若爲非二義文法,則C正確;若爲二義文法,則一個文法不對應唯一的語言
-
關於短語和句柄,正確的論述是(B)。
A 短語就是句柄
B 直接短語纔可能是句柄
C 最左短語一定是句柄
D 最右短語一定是句柄
-
若一個文法是遞歸的,則它產生的句子個數是(A)。
A 無窮個
B 可能有限個,可能無窮個
C 有限個
-
正則文法(A)二義性的。
A 可以是
B 一定不是
C 一定是
-
一個語言的文法是(B)。
A 唯一的
B 不唯一的
C 個數有限的
D 無數個
-
文法識別符號經過人一步推導得到的結果是(A)。
A 句型
B 句柄
C 句子
D 短語
-
文法分爲四種類型:0型文法、1型文法、2型文法、3型文法,其中3型文法是(B)。
A 短語文法
B 正規文法
C 上下文有關文法
D 上下文無關文法
-
在編譯中產生語法樹是爲了(A)。
A 語法分析
B 語義分析
C 詞法分析
D 目標代碼生成
-
一個上下文無關文法包含四個部分,一組非終結符,一組終結符,一個開始符號以及一組(C)。
A 句子
B 句型
C 產生式
D 單詞
-
自下而上的語法分析中,應從(C)開始分析。
A 開始符號
B 句柄
C 句子
D 句型
多選
-
如果一個文法是二義文法,必然有(ABCD)的現象存在。
A 文法的某一個句子存在兩顆或兩棵以上的語法樹
B 對於文法的某一個句子,存在兩種或兩種以上的最左(最右)推導
C 對於文法的某一個句子,存在兩種或兩種以上的最左(最右)規約
D 在進行規約時,文法的某些規範句柄不唯一
-
給定語法A–>bAcc|ε,下面的符號串中爲該文法的句子是(AE)。
A bcc
B bcbc
C bcbcc
D bccbcc
E bbccc
簡答
1.寫出C語言和Java語言的輸入字母表。
- C語言:0~9數字,大小寫英文字母,鍵盤上可見的字符
- Java語言:Unicode可以包括的所有字符
2.文法G爲
N→D∣ND D→0∣1∣2∣3∣4∣5∣6∣7∣8∣9
(1)G的語言是什麼?
- G的語言是:0~9的數字組成的任意非空串
L(G)={x∣x∈{0,1,2,3,4,5,6,7,8,9}+}
(2)給出句子0127、34、568的最左推導和最右推導。
N⇒ND ⇒NDD ⇒NDDD ⇒DDDD ⇒0DDD ⇒01DD ⇒012D ⇒0127
理解:N⇒ND是對N中的最左非終結符N進行了替換,替換成了ND;
ND⇒NDD是對ND中的最左非終結符N進行了替換,替換成了ND;
後面的同理。
最右推導:
N⇒ND ⇒N7 ⇒ND7 ⇒N27 ⇒ND27 ⇒N127 ⇒D127 ⇒0127
理解:N⇒ND是對N中的最右非終結符N進行了替換,替換成了ND;
ND⇒N7是對ND中的最右非終結符D進行了替換,替換成了7;
後面的同理。
3.寫一文法,使其語言是奇數集。要求:不以0打頭。
- 只有一位數的情況:D→1∣3∣5∣7∣9
- 複雜的情況:分三部分
末尾:以1|3|5|7|9結尾,D→1∣3∣5∣7∣9
開頭:除了0的任意數字,B→2∣4∣6∣8∣D
中間:空或者任意數字串,C→CA∣ε
- 最終答案:文法G(N)爲:N→BCD∣D D→1∣3∣5∣7∣9 B→2∣4∣6∣8∣D C→CA∣ε A→0∣B
4.證明文法:S→iSeS∣iS∣i是二義的。
首先:找到此文法對應的一個句子,iiiei
然後:構造與之對應的兩顆語法樹
5.給出下面語言的相應文法
-
L1={anbnci∣n≥1,i≥0}
從n,i的不同區直來把L1分成兩部分:
- 前半部分是anbn:A→aAb∣ab
- 後半部分是ci:B→Bc∣ε
即G1[S]可以寫爲:S→AB A→aAb∣ab B→cB∣ε
-
L2={aibncn∣n≥1,i≥0}
G2[S]: S→AB A→aA∣ε B→bBc∣bc
-
L3={anbnambm∣m,n≥0}
G3[S]: A→AB A→aAb∣ε B→aBb∣ε
-
L4={1n0m1m0n∣n,m≥0}
可以看成是兩部分:
- 中間部分是0m1m:A→0A1∣ε
- 剩下兩邊的部分是:S→1S0∣A
G4[S]: S→1S0∣A A→0A1∣ε