蒋立源编译原理第三版第四章 习题与答案2

蒋立源编译原理第三版第四章 习题与答案2
蒋立源编译原理第三版第四章 习题与答案2

第五章习题

5-1 设有文法G[S]:

S→A/ A→aA∣AS∣/

(1) 找出部分符号序偶间的简单优先关系。

(2) 验证G[S]不是简单优先文法。

5-2 对于算符文法G[S]:

S→E E→E-T∣T T→T*F∣F F→-P∣P P→(E)∣i

(1) 找出部分终结符号序偶间的算符优先关系。

(2) 验证G[S]不是算符优先文法。

5-3 设有文法G′[E]:

E→E1 E1→E1+T1|T1 T1→T T→T*F|F F→(E)|i

其相应的简单优先矩阵如题图5-3所示,试给出对符号串(i+i)进行简单优先分析的过程。

题图5-3 文法G′[E]的简单优先矩阵

5-4 设有文法G[E]:

E→E+T|T

T→T*F|F

F→(E)|i

其相应的算符优先矩阵如题图5-4所示。试给出对符号串(i+i)进行算符优先分析的过程。

题图5-4 文法G[E]的算符优先矩阵

5-5 对于下列的文法,试分别构造识别其全部可归前缀的DFA和LR(0)分析表,并判断哪些是LR(0)文法。

(1) S→aSb∣aSc∣ab

(2) S→aSSb∣aSSS∣c

(3) S→A A→Ab∣a

5-6 下列文法是否是SLR(1)文法?若是,构造相应的SLR(1)分析表,若不是,则阐明其理由。

(1) S→Sab∣bR R→S∣a

(2) S→aSAB∣BA A→aA∣B B→b

(3) S→aA∣bB A→cAd∣ε B→cBdd∣ε

5-7 对如下的文法分别构造LR(0)及SLR(1)分析表,并比较两者的异同。

S→cAd∣b A→ASc∣a

5-8 对于文法G[S]:

S→A A→BA∣ε B→aB∣b

(1) 构造LR(1)分析表;

(2) 给出用LR(1)分析表对输入符号串abab的分析过程。

5-9 对于如下的文法,构造LR(1)项目集族,并判断它们是否为LR(1)文法。

(1) S→A A→AB∣ε B→aB∣b

(2) S→aSa∣a

第4章习题答案2

5-1 解:

(1) 由文法的产生式和如答案图5-1(a)所示的句型A//a/的语法树,可得G中的部分优先关系如答案图5-1(b)所示。

(2) 由答案图5-1(b)可知,在符号A和/之间,即存在等于关系,又存在低于关系,故文法G[S]不是简单优先文法。

5-2 解:

(1) 由文法G[S]的产生式可直接看出:

(○=)

此外,再考察句型-P--(E)和i*(T*F)的语法树 (见答案图5-2(a)及(b))。

由答案图5-2(a)可得:

-○>- , -○<- , -○< (

由答案图5-2(b)可得:

i ○> * , * ○< ( , ( ○< * , * ○>)

(2) 由答案图5-2(a)可知,在终结符号-和-之间,存在两种算符优先关系:

-○>- , -○<-

故文法G[S]不是算符优先文法。

5-3 解:对符号串(i+i)进行简单优先分析的过程如答案表5-3所示。

因为分析成功,所以符号串(i+i)是文法G′[E]的合法句子。

答案表5-3 符号串(i+i)的简单优先分析过程

5-4 解:对符号串(i+i)进行算符优先分析的过程如答案表5-4所示。因为分析成功,所以符号串(i+i)是文法G[E]的合法句子。

句子(i+i)及其分析过程中所得句型的语法树如答案图5-4所示。

答案表5-4 符号串(i+i)的算符优先分析过程

5-5 解:

(1) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 2.S→aSc

1.S→aSb 3.S→ab

识别文法G[S]全部可归前缀的DFA如答案图5-5-(1)所示。

因为文法G[S]的每个LR(0)项目集中都不含冲突项目,所以文法G[S]是LR(0)文法,故可构造出不含冲突动作的LR(0)分析表如答案表5-5-(1)所示。

答案表5-5-(1) 文法G[S]的LR(0)分析表

(2) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添

加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 2.S→aSSS

1.S→aSSb 3.S→c

识别文法G[S]全部可归前缀的DFA如答案图5-5-(2)所示。

因为文法G[S]的每个LR(0)项目集中都不含冲突项目,所以文法G[S]是LR(0)文法,故可构造出不含冲突动作的LR(0)分析表如答案表5-5-(2)所示。

答案表5-5-(2) 文法G[S]的LR(0)分析表

(3) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 2.A→Ab

1.S→A 3.A→a

识别文法G[S]全部可归前缀的DFA如答案图5-5-(3)所示。

因为在LR(0)项目集I2中含有移进-归约冲突项目,所以文法G[S]不是LR(0)文法,故构造出的LR(0)分析表中含有冲突动作。文法G[S]的LR(0)分析表如答案表5-5-(3)所示。

答案表5-5-(3) 文法G[S]的LR(0)分析表

5-6 解:

(1) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 3.R→S

1.S→Sab 4.R→a

2. S→bR

识别文法G[S]全部可归前缀的DFA如答案图5-6-(1)所示。

由答案图5-6-(1)可知,在项目集I1 和I4中都存在“移进-归约”冲突。在项目集I4 ={ R→S·, S→S·ab }中, 由于FOLLOR(R)={a},FOLLOR(R)∩{a}={a}≠ ,所以其项目集的“移进-归约”冲突不可能通过SLR(1)规则得到解决,从而该文法不是SLR(1)文法。

(2) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 3.A→aA

1.S→aSAB 4.A→B

2.S→BA 5.B→b

识别文法G[S]全部可归前缀的DFA如答案图5-6-(2)所示。

答案图5-6-(2) 识别G[S]全部可归前缀的DFA

因为文法G[S]的每个LR(0)项目集中都不含冲突项目,所以文法G[S]是LR(0)文法,故也是SLR(1)文法。

因为FOLLOW(S)={a,b,#}, FOLLOW(A)={a,b,#}, FOLLOW(B)={a,b,#}, 所以文法G[S]的SLR(1)分析表如答案表5-6-(2)所示。

答案表5-6-(2) 文法G[S]的SLR(1)分析表

(3) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 4.A→ε

1.S→aA 5.B→cBdd

2.S→bB 6.B→ε

3. A→cAd

识别文法G[S]全部可归前缀的DFA如答案图5-6-(3)所示。

由答案图5-6-(3)可知,在项目集I 2 ,I 3 ,I 5 和I 9中都存在“移进-归约”冲突。 因为在项目集I 2 和I 5中, 由于FOLLOR(A)={d,#},FOLLOR(A)∩{c}=?,所以其项目集的“移进-归约”冲突能通过SLR(1)

规则得到解决;

又因为在项目集I 3 和I 9中, 由于FOLLOR(B)={d,#},FOLLOR(B)∩{c}=?,所以其项目集的“移进-归约”冲突也能通过SLR(1)规则得到解决;所以文法G[S]是SLR(1)文法。

因为FOLLOR(S)={#},FOLLOR(A)={d,#},FOLLOR(B)={d,#},所以文法G[S]的SLR(1)分析表如答案表5-6-(3)所示。

答案表5-6-(3) 文法G[S]的SLR(1)分析表

5-7 解:在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 3.A→ASc

1.S→cAd 4.A→a

2.S→b

识别文法G[S]全部可归前缀的DFA如答案图5-7所示。

因为文法G[S]的每个LR(0)项目集中都不含冲突项目,所以文法G[S]是LR(0)文法。文法G[S]的LR(0)分析表如答案表5-7-(a)所示。

答案表5-7-(a) 文法G[S]的LR(0)分析表

因为FOLLOR(S)={#,c},FOLLOR(A)={b,c,d},所以文法G[S]的SLR(1)分析表如答案表5-7-(b)所示。

答案表5-7-(b) 文法G[S]的SLR(1)分析表

两个表的相同之处为:

(1) 两个表的GOTO表部分完全相同。

(2) 在两个表的ACTION表中,不含归约项目的项目集对应的行的元素完全相同,即第0,2,5,7行完全相同。

两个表的不同之处为:

在两个表的ACTION表中,含有归约项目的项目集对应的行的元素不同,即第3,4,6,8行的元素不同。以第3行为例,答案表5-7-(a)中的所有元素都为r2 ;而在答案表5-7-(b)中 , 因为FOLLOR(S)={#,c},故仅在“#”和“c”列对应的元素为r2 。

5-8 解:

(1) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 3.A→ε

1.S→A 4.B→aB

2.A→BA 5.B→b

文法G[S]的LR(1)项目集及DFA如答案图5-8所示。

文法G[S]的LR(1)分析表如答案表5-8-(1)所示。

答案表5-8-(1) 文法G[S]的LR(1)分析表

(2) 用LR(1)分析表对输入符号串abab的分析过程如答案表5-8-(2)所示。因为分析成功,所以符号串abab是文法G[S]的合法句子。

答案表5-8-(2) 符号串abab的LR分析过程

5-9 解:

(1) 在文法G[S]中引入一个新的开始符号S′,且将S′→S作为第0个产生式添加到文法G中,从而得到G的拓广文法G′[S′]:

0.S′→S 3.A→ε

1.S→A 4.B→aB

2.A→AB 5.B→b

文法G[S]的LR(1)项目集及DFA如答案图5-9-(1)所示。

文法G[S]的LR(1)分析表如答案表5-9-(1)所示。因为分析表中不含多重定义的元素,所以文法G[S]是LR(1)文法。

答案表5-9-(1) 文法G[S]的LR(1)分析表

编译原理(清华大学第2版)课后习题答案

第三章 N=>D=> {0,1,2,3,4,5,6,7,8,9} N=>ND=>NDD L={a |a(0|1|3..|9)n且 n>=1} (0|1|3..|9)n且 n>=1 {ab,} a n b n n>=1 第6题. (1) <表达式> => <项> => <因子> => i (2) <表达式> => <项> => <因子> => (<表达式>) => (<项>) => (<因子>)=>(i) (3) <表达式> => <项> => <项>*<因子> => <因子>*<因子> =i*i (4) <表达式> => <表达式> + <项> => <项>+<项> => <项>*<因子>+<项> => <因子>*<因子>+<项> => <因子>*<因子>+<因子> = i*i+i (5) <表达式> => <表达式>+<项>=><项>+<项> => <因子>+<项>=i+<项> => i+<因子> => i+(<表达式>) => i+(<表达式>+<项>) => i+(<因子>+<因子>) => i+(i+i) (6) <表达式> => <表达式>+<项> => <项>+<项> => <因子>+<项> => i+<项> => i+<项>*<因子> => i+<因子>*<因子> = i+i*i 第7题

第9题 语法树 s s s* s s+a a a 推导: S=>SS*=>SS+S*=>aa+a* 11. 推导:E=>E+T=>E+T*F 语法树: E +T * 短语: T*F E+T*F 直接短语: T*F 句柄: T*F 12.

短语: 直接短语: 句柄: 13.(1)最左推导:S => ABS => aBS =>aSBBS => aBBS => abBS => abbS => abbAa => abbaa 最右推导:S => ABS => ABAa => ABaa => ASBBaa => ASBbaa => ASbbaa => Abbaa => a1b1b2a2a3 (2) 文法:S → ABS S → Aa S →ε A → a B → b (3) 短语:a1 , b1 , b2, a2 , , bb , aa , abbaa, 直接短语: a1 , b1 , b2, a2 , , 句柄:a1 14 (1) S → AB A → aAb | ε B → aBb | ε (2) S → 1S0 S → A A → 0A1 |ε 第四章 1. 1. 构造下列正规式相应的DFA (1)1(0|1)*101 NFA (2) 1(1010*|1(010)*1)*0 NFA

最新编译原理试题汇总+编译原理期末试题(8套含答案+大题集)

编译原理考试题及答案汇总一、选择 1.将编译程序分成若干个“遍”是为了_B__。 A . 提高程序的执行效率 B.使程序的结构更加清晰 C. 利用有限的机器内存并提高机器的执行效率 D.利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指__C__。 A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。 C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等 3.中间代码生成时所依据的是 _C_。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 4.后缀式 ab+cd+/可用表达式__B_来表示。 A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d 6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。 A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析 7.词法分析器用于识别__C___。 A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符 8.语法分析器则可以发现源程序中的___D__。 A.( ) 语义错误 B.( ) 语法和语义错误 C.( ) 错误并校正 D.( ) 语法错误 9.下面关于解释程序的描述正确的是__B___。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3) 10.解释程序处理语言时 , 大多数采用的是__B___方法。 A.( ) 源程序命令被逐个直接解释执行 B.( ) 先将源程序转化为中间代码 , 再解释执行 C.( ) 先将源程序解释转化为目标程序 , 再执行 D.( ) 以上方法都可以 11.编译过程中 , 语法分析器的任务就是__B___。 (1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构 A.( ) (2)(3) B.( ) (2)(3)(4)C.( ) (1)(2)(3) D.( ) (1)(2)(3)(4) 12.编译程序是一种___C__。 A. ( ) 汇编程序 B.( ) 翻译程序 C.( ) 解释程序 D.( ) 目标程序 13.文法 G 所描述的语言是_C____的集合。 A. ( ) 文法 G 的字母表 V 中所有符号组成的符号串 B.( ) 文法 G 的字母表 V 的闭包 V* 中的所有符号串 C.( ) 由文法的开始符号推出的所有终极符串 D. ( ) 由文法的开始符号推出的所有符号串 14.文法分为四种类型,即 0 型、1 型、2 型、3 型。其中 3 型文法是___B__。 A. ( ) 短语文法 B.( ) 正则文法 C.( ) 上下文有关文法 D.( ) 上下文无关文法15.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 __D___。 A.( ) 句子 B.( ) 句型 C.( ) 单词 D.( ) 产生式

大学物理第8章磁场题库2(含答案)

第八章磁场 填空题(简单) 1、将通有电流为I的无限长直导线折成1/4圆环形状,已知半圆环的半径为R,则圆心O点的磁 感应强度大小为0 I。 8R 2、磁场的咼斯疋理表明磁场是无源场。 3、只要有运动电荷,其周围就有磁场产生; 4、(如图)无限长直导线载有电流∣1,矩形回路载有电流I 2, 12回路的AB边与长直导线平行。电 -IIL -IIL 流I i产生的磁场作用在∣2回路上的合力F的大小为012一0 1 2,F的方向水平向左。(综 2na 2 兀(a+b) 合) X X X X X / X X I ×v ×x√X X X V-X 4题图 5题图 5、有一圆形线圈,通有电流I ,放在均匀磁场B中,线圈平面与B垂直,则线圈上P点将受到安培力的作 用,其方向为指向圆心,线圈所受合力大小为_0 ___________ 。(综合) - - n 6、[ B dl =%v Ij是磁场中的安培环路定理,它所反映的物理意义 i =0 是在真空的稳恒磁场中,磁感强度B沿任一闭合路径的积分等于%乘以该闭合路径所包围的各电流的代数和。 7、磁场的高斯定理表明通过任意闭合曲面的磁通量必等于_0 ________ 。 8、电荷在磁场中不一定(填一定或不一定)受磁场力的作用。 9、磁场最基本的性质是对运动电荷、载流导线有力的作用。 10、如图所示,在磁感强度为B的均匀磁场中,有一半径为R的半球面, B与半球面轴线的夹角为:?。求通过该半球面的磁通量为-或二R2COS>。(综合) 12、一电荷以速度V运动,它既产生_________ 电场,又产生磁场。(填“产生”或 10题图

“不产生”) 13、一电荷为+q ,质量为m ,初速度为'0的粒子垂直进入磁感应强度为B的均匀磁场中,粒子将作匀速圆周___ 运动,其回旋半径R= m°,回旋周期T= 2^m Bq Bq 14、把长直导线与半径为R的半圆形铁环与圆形铁环相 连接(如图a、b所示),若通以电流为I ,贝U a圆心O 的磁感应强度为—O=_____________ ; -I 图b圆心O的磁感应强度为J 。 4R I i 。这一重要结论称为磁场的环路定理,其 15、在磁场中磁感应强度B沿任意闭合路径的线积分总等于 数学表达式为「I Bdf=二o'? I。 16、磁场的高斯定理表明磁场具有的性质磁感应线是闭合的,磁场是无源场。 18、在磁场空间分别取两个闭合回路,若两个回路各自包围载流导线的根数不同,但电流的代数和相同,则磁 感应强度沿两闭合回路的线积分相同,两个回路的磁场分布不相同。(填“相同”或“不相同”) 判断题(简单) 1安培环路定理说明电场是保守力场。(×) 2、安培环路定理说明磁场是无源场。(×) 3、磁场的高斯定理是通过任意闭合曲面的磁通量必等于零。(√ ) 4、电荷在磁场中一定受磁场力的作用。(×) 5、一电子以速率V进入某区域,若该电子运动方向不改变,则该区域一定无磁场;(× ) 6、在B=2特的无限大均匀磁场中,有一个长为L仁2.0米,宽L2=0.50米的矩形线圈,设线圈平 面的法线方向与磁场方向相同,则线圈的磁通量为1Wb (×) 7、磁场力的大小正比于运动电荷的电量。如果电荷是负的,它所受力的方向与正电荷相反。(√) &运动电荷在磁场中所受的磁力随电荷的运动方向与磁场方向之间的夹角的改变而变化。当电荷的运动方向与磁场方向一致时,它不受磁力作用。而当电荷的运动方向与磁场方向垂直时,它所受的磁力为最大。

编译原理第4章作业答案

编译原理第4章作业 答案 本页仅作为文档封面,使用时可以删除 This document is for reference only-rar21year.March

第四章 习题4.2.1:考虑上下文无关文法: S->S S +|S S *|a 以及串aa + a* (1)给出这个串的一个最左推导 S -> S S * -> S S + S * -> a S + S * -> a a + S * -> aa + a* (3)给出这个串的一棵语法分析树 习题4.3.1:下面是一个只包含符号a和b的正则表达式的文法。它使用+替代表示并运算的符号|,以避免和文法中作为元符号使用的竖线相混淆: rexpr→ rexpr + rterm | rterm rterm→rterm rfactor | rfactor rfactor→ rfactor * | rprimary rprimary→a | b 1)对这个文法提取公因子 2)提取公因子的变换使这个文法适用于自顶向下的语法分析技术吗? 3)提取公因子之后,原文法中消除左递归 4)得到的文法适用于自顶向下的语法分析吗? 解

1)提取左公因子之后的文法变为 rexpr→ rexpr + rterm | rterm rterm→rterm rfactor | rfactor rfactor→ rfactor * | rprimary rprimary→a | b 2)不可以,文法中存在左递归,而自顶向下技术不适合左递归文法 3)消除左递归后的文法

rexpr -> rterm rexpr’ rexpr’-> + rterm rexpr’|ε rterm-> rfactor rterm’ rterm’-> rfactor rterm’|ε rfactor-> rprimay rfactor’ rfactor’-> *rfactor’|ε rprimary-> a | b 4)该文法无左递归,适合于自顶向下的语法分析 习题4.4.1:为下面的每一个文法设计一个预测分析器,并给出预测分析表。可能要先对文法进行提取左公因子或消除左递归 (3)S->S(S)S|ε (5)S->(L)|a L->L,S|S 解 (3) ①消除该文法的左递归后得到文法 S->S’ S’->(S)SS’|ε ②计算FIRST和FOLLOW集合 FIRST(S)={(,ε} FOLLOW(S)={),$} FIRST(S’)={(,ε} FOLLOW(S’)={),$} ③构建预测分析表

编译原理_第三版_课后答案

编译 原理 课后题答案 第二章 P36-6 (1) L G ()1是0~9组成的数字串 (2) 最左推导: N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ??????????????????0010120127334 556568 最右推导: N ND N ND N ND N D N ND N D N ND N ND N D ??????????????????77272712712701274434 886868568 P36-7 G(S) O N O D N S O AO A AD N →→→→→1357924680||||||||||| P36-8 文法: E T E T E T T F T F T F F E i →+-→→|||*|/()| 最左推导: E E T T T F T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ?+?+?+?+?+?+?+?+??????+?+?+?+?+?+********()*()*()*()*()*()*() 最右推导:

E E T E T F E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ?+?+?+?+?+?+?+?+?????+?+?+?+?+?+?+**********()*()*()*()*()*()*()*() 语法树:/******************************** E E F T E + T F F T +i i i E E F T E -T F F T -i i i E E F T +T F F T i i i *i+i+i i-i-i i+i*i *****************/ P36-9 句子iiiei 有两个语法树: S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ???????? P36-10 /************** ) (|)(|S T T TS S →→ ***************/ P36-11 /*************** L1: ε ||cC C ab aAb A AC S →→→ L2:

编译原理复习题及答案

编译原理复习题及答案 一、选择题 1.一个正规语言只能对应(B) A 一个正规文法 B 一个最小有限状态自动机 2.文法G[A]:A→εA→aB B→Ab B→a是(A) A 正规文法 B 二型文法 3.下面说法正确的是(A) A 一个SLR(1)文法一定也是LALR(1)文法 B 一个LR(1)文法一定也是LALR(1)文法 4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A) A 必要条件 B 充分必要条件 5.下面说法正确的是(B) A 一个正规式只能对应一个确定的有限状态自动机 B 一个正规语言可能对应多个正规文法 6.算符优先分析与规范归约相比的优点是(A) A 归约速度快 B 对文法限制少 7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B) A 则可能存在移进/归约冲突 B 则可能存在归约/归约冲突 C 则可能存在移进/归约冲突和归约/归约冲突 8.下面说法正确的是(A) A Lex是一个词法分析器的生成器 B Yacc是一个语法分析器 9.下面说法正确的是(A) A 一个正规文法也一定是二型文法 B 一个二型文法也一定能有一个等价的正规文法 10.编译原理是对(C)。 A、机器语言的执行 B、汇编语言的翻译 C、高级语言的翻译 D、高级语言程序的解释执行 11.(A)是一种典型的解释型语言。

A.BASIC B.C C.FORTRAN D.PASCAL 12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。 A. 编译器 B. 汇编器 C. 解释器 D. 预处理器 13.用高级语言编写的程序经编译后产生的程序叫(B) A.源程序 B.目标程序C.连接程序D.解释程序 14.(C)不是编译程序的组成部分。 A.词法分析程序 B.代码生成程序 C.设备管理程序 D.语法分析程序 15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。 A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。 A.出错处理B.词法分析C.目标代码生成D.表格管理 17.源程序是句子的集合,(B)可以较好地反映句子的结构。 A. 线性表 B. 树 C. 完全图 D. 堆栈 18.词法分析器的输出结果是(D)。 A、单词自身值 B、单词在符号表中的位置 C、单词的种别编码 D、单词的种别编码和自身值 19.词法分析器不能(D) A. 识别出数值常量 B. 过滤源程序中的注释 C. 扫描源程序并识别记号 D. 发现括号不匹配 20.文法:G:S→xSx | y所识别的语言是(D)。 A、xyx B、(xyx)* C、x*yx* D、x n yx n (n≥0) 21.如果文法G是无二义的,则它的任何句子α(A) A.最左推导和最右推导对应的语法树必定相同 B.最左推导和最右推导对应的语法树可能不同 C.最左推导和最右推导必定相同 D.可能存在两个不同的最左推导,但它们对应的语法树相同 22.正则文法(A)二义性的。 A. 可以是 B. 一定不是 C. 一定是 23.(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。 A. 存在 B. 不存在 C. 无法判定是否存在 24.给定文法A→bA | ca,为该文法句子的是(C) A. bba B. cab C. bca D. cba

编译原理课后习题答案(第三版)

精品文档 第二章 P36-6 (1) L G ()1是0~9组成的数字串 (2) 最左推导: N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ??????????????????0010120127334 556568 最右推导: N ND N ND N ND N D N ND N D N ND N ND N D ??????????????????77272712712701274434 886868568 P36-7 G(S) O N O D N S O AO A AD N →→→→→1357924680||||||||||| P36-8 文法: E T E T E T T F T F T F F E i →+-→→|||*|/()| 最左推导: E E T T T F T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ?+?+?+?+?+?+?+?+??????+?+?+?+?+?+********()*()*()*()*()*()*() 最右推导: E E T E T F E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ?+?+?+?+?+?+?+?+?????+?+?+?+?+?+?+**********()*()*()*()*()*()*()*() 语法树:/********************************

最新编译原理复习题(经典)

编译原理复习题 一、是非题 1.计算机高级语言翻译成低级语言只有解释一种方式。(×) 3.每个文法都能改写为 LL(1) 文法。 (×) 4.算符优先关系表不一定存在对应的优先函数。 (√) 5.LR分析方法是自顶向下语法分析方法。 (×) 6.“ 用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法。(× ) 7.一个句型的句柄一定是文法某产生式的右部。(√) 8.仅考虑一个基本块,不能确定一个赋值是否真是无用的。(√ ) 9.在中间代码优化中循环上的优化主要有不变表达式外提和削减运算强度。(× ) 10.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。(×) 11.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。(× ) 12.递归下降分析法是自顶向下分析方法。(√ ) 13.产生式是用于定义词法成分的一种书写规则。(×) 14.在SLR(1)分析法的名称中,S的含义是简单的。(√) 15.综合属性是用于“ 自上而下” 传递信息。(× ) 16.符号表中的信息栏中登记了每个名字的属性和特征等有关信息,如类型、种属、所占单元大小、地址等等。(×) 17.程序语言的语言处理程序是一种应用软件。(×) 18.解释程序适用于COBOL 和FORTRAN 语言。(×) 19.一个LL(l)文法一定是无二义的。(√) 20.正规文法产生的语言都可以用上下文无关文法来描述。(√) 21.一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。(×) 22.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。(√) 22.逆波兰法表示的表达式亦称后缀式。(√ ) 23.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。(√ ) 24.数组元素的地址计算与数组的存储方式有关。(√) 25.算符优先关系表不一定存在对应的优先函数。(×) 26.编译程序是对高级语言程序的解释执行。(× ) 27.一个有限状态自动机中,有且仅有一个唯一的终态。(×) 28.一个算符优先文法可能不存在算符优先函数与之对应。(√ ) 29.语法分析时必须先消除文法中的左递归。(×) 30.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。(√) 31.逆波兰表示法表示表达式时无须使用括号。(√ ) 32.静态数组的存储空间可以在编译时确定。(√) 33.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。(√) 34.两个正规集相等的必要条件是他们对应的正规式等价。(√) 35.一个语义子程序描述了一个文法所对应的翻译工作。(×) 36.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。(×) 37.确定的自动机以及不确定的自动机都能正确地识别正规集。(√) 38.词法分析作为单独的一遍来处理较好。(× ) 39.构造LR分析器的任务就是产生LR分析表。(√) 40.规范归约和规范推导是互逆的两个过程。(√) 41.同心集的合并有可能产生新的“移进”/“归约”冲突。(× )

大学物理第8章 磁场题库2(含答案)..

第八章 磁场 填空题 (简单) 1、将通有电流为I 的无限长直导线折成1/4圆环形状,已知半圆环的半径为R ,则圆心O 点的磁 感应强度大小为 08I R μ 。 2、磁场的高斯定理表明磁场是 无源场 。 3、只要有运动电荷,其周围就有 磁场 产生; 4、(如图)无限长直导线载有电流I 1,矩形回路载有电流I 2,I 2回路的AB 边与长直导线平行。电 流I 1产生的磁场作用在I 2回路上的合力F 的大小为01201222() I I L I I L a a b μμππ- +,F 的方向 水平向左 。 (综合) 5、有一圆形线圈,通有电流I ,放在均匀磁场B 中,线圈平面与B 垂直,则线圈上P 点将受到 安培 力的作用,其方向为 指向圆心 ,线圈所受合力大小为 0 。(综合) 6、∑?==?n i i l I l d B 0 0μ 是 磁场中的安培环路定理 ,它所反映的物理意义 是 在真空的稳恒磁场中,磁感强度B 沿任一闭合路径的积分等于0μ乘以该闭合路径所包围的各电流的代数 和。 7、磁场的高斯定理表明通过任意闭合曲面的磁通量必等于 0 。 8、电荷在磁场中 不一定 (填一定或不一定)受磁场力的作用。 9、磁场最基本的性质是对 运动电荷、载流导线 有力的作用。 10、如图所示,在磁感强度为B 的均匀磁场中,有一半径为R 的半球面, B 与半球面轴线的夹角为α。求通过该半球面的磁通量为2 cos B R πα-。(综合) 12、一电荷以速度v 运动,它既 产生 电场,又 产生 磁场。(填“产生”或 4题图 5题图

“不产生”) 13、一电荷为+q ,质量为m ,初速度为0υ的粒子垂直进入磁感应强度为B 的均匀磁场中,粒子将作 匀速圆 周 运动,其回旋半径R= 0m Bq υ,回旋周期T=2m Bq π 。 14、把长直导线与半径为R 的半圆形铁环与圆形铁环相连接(如图a 、b 所示),若通以电流为I ,则 a 圆心O 的磁感应强度为___0__________; 图b 圆心O 的磁感应强度为 04I R μ。 15、在磁场中磁感应强度B 沿任意闭合路径的线积分总等于0i I μ∑ 。这一重要结论称为磁场的环路定理,其 数学表达式为 l B dl I μ=∑?。 16、磁场的高斯定理表明磁场具有的性质 磁感应线是闭合的,磁场是无源场 。 18、在磁场空间分别取两个闭合回路,若两个回路各自包围载流导线的根数不同,但电流的代数和相同,则磁感应强度沿两闭合回路的线积分 相同 ,两个回路的磁场分布 不相同 。(填“相同”或“不相同” ) 判断题 (简单) 1、安培环路定理说明电场是保守力场。 ( × ) 2、安培环路定理说明磁场是无源场。 ( × ) 3、磁场的高斯定理是通过任意闭合曲面的磁通量必等于零。 ( √ ) 4、电荷在磁场中一定受磁场力的作用。 ( × ) 5、一电子以速率V 进入某区域,若该电子运动方向不改变,则该区域一定无磁场;( × ) 6、在B=2特的无限大均匀磁场中,有一个长为L1=2.0米,宽L2=0.50米的矩形线圈,设线圈平 面的法线方向与磁场方向相同,则线圈的磁通量为1Wb 。 ( × ) 7、磁场力的大小正比于运动电荷的电量。如果电荷是负的,它所受力的方向与正电荷相反。(√) 8、运动电荷在磁场中所受的磁力随电荷的运动方向与磁场方向之间的夹角的改变而变化。当电荷的运动方向与磁场方向一致时,它不受磁力作用。而当电荷的运动方向与磁场方向垂直时,它所受的磁力为最大。

编译原理课后习题答案-清华大学-第二版

第1章引论 第1题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1) 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2) 源程序:源语言编写的程序称为源程序。 (3) 目标程序:目标语言书写的程序称为目标程序。 (4) 编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5) 后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6) 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第2题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。 答案: 一个典型的编译程序通常包含8个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。

目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。 表格管理程序:负责建立、填写和查找等一系列表格工作。表格的作用是记录源程序的各类信息和编译各阶段的进展情况,编译的每个阶段所需信息多数都从表格中读取,产生的中间结果都记录在相应的表格中。可以说整个编译过程就是造表、查表的工作过程。需要指出的是,这里的“表格管理程序”并不意味着它就是一个独立的表格管理模块,而是指编译程序具有的表格管理功能。 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。当编译程序发现源程序中的错误时,错误处理程序负责报告出错的位置和错误性质等信息,同时对发现的错误进行适当的校正(修复),目的是使编译程序能够继续向下进行分析和处理。 注意:如果问编译程序有哪些主要构成成分,只要回答六部分就可以。如果搞不清楚,就回答八部分。 第3题 何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系? 答案: 翻译程序是指将用某种语言编写的程序转换成另一种语言形式的程序的程序,如编译程序和汇编程序等。 编译程序是把用高级语言编写的源程序转换(加工)成与之等价的另一种用低级语言编写的目标程序的翻译程序。 解释程序是解释、执行高级语言源程序的程序。解释方式一般分为两种:一种方式是,源程序功能的实现完全由解释程序承担和完成,即每读出源程序的一条语句的第一个单词,则依据这个单词把控制转移到实现这条语句功能的程序部分,该部分负责完成这条语句的功

哈工大编译原理习题及答案

1.1何谓源程序、目标程序、翻译程序、编译程序和解释程序?它们之间可能有何种关系? 1.2一个典型的编译系统通常由哪些部分组成?各部分的主要功能是什么? 1.3选择一种你所熟悉的程序设计语言,试列出此语言中的全部关键字,并通过上机使用该语言以判明这些关键字是否为保留字。 1.4选取一种你所熟悉的语言,试对它进行分析,以找出此语言中的括号、关键字END以及逗号有多少种不同的用途。 1.5试用你常用的一种高级语言编写一短小的程序,上机进行编译和运行,记录下操作步骤和输出信息,如果可能,请卸出中间代码和目标代码。 第一章习题解答 1.解:源程序是指以某种程序设计语言所编写的程序。目标程序是指编译程序(或解释程序)将 源程序处理加工而得的另一种语言(目标语言)的程序。翻译程序是将某种语言翻译成另一种语言的程序的统称。编译程序与解释程序均为翻译程序,但二者工作方法不同。解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。即边解释边执行,翻译所得的指令序列并不保存。编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。即先翻译、后执行。 2.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成 程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。 3.解:C语言的关键字有:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while。上述关键字在C语言中均为保留字。 4.解:C语言中括号有三种:{},[],()。其中,{}用于语句括号;[]用于数组;()用于函数(定 义与调用)及表达式运算(改变运算顺序)。C语言中无END关键字。逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。 5.略 第二章前后文无关文法和语言 21设有字母表A1={a,b,…,z},A2={0,1,…,9},试回答下列问题: (1) 字母表A1上长度为2的符号串有多少个? (2) 集合A1A2含有多少个元素? (3) 列出集合A1 (A1∪A2)*中的全部长度不大于3的符号串。

编译原理教程课后习题答案——第四章

第四章语义分析和中间代码生成 4.1 完成下列选择题: (1) 四元式之间的联系是通过实现的。 a. 指示器 b. 临时变量 c. 符号表 d. 程序变量 (2) 间接三元式表示法的优点为。 a. 采用间接码表,便于优化处理 b. 节省存储空间,不便于表的修改 c. 便于优化处理,节省存储空间 d. 节省存储空间,不便于优化处理 (3) 表达式(┐A∨B)∧(C∨D)的逆波兰表示为。 a. ┐AB∨∧CD∨ b. A┐B∨CD∨∧ c. AB∨┐CD∨∧ d. A┐B∨∧CD∨ (4) 有一语法制导翻译如下所示: S→bAb {print″1″} A→(B {print″2″} A→a {print″3″} B→Aa) {print″4″} 若输入序列为b(((aa)a)a)b,且采用自下而上的分析方法,则输出序列为。a. 32224441 b. 34242421 c. 12424243 d. 34442212 【解答】 (1) b (2) a (3) b (4) b 4.2 何谓“语法制导翻译”?试给出用语法制导翻译生成中间代码的要点,并用一简例予以说明。 【解答】语法制导翻译(SDTS)直观上说就是为每个产生式配上一个翻译子程序(称语义动作或语义子程序),并且在语法分析的同时执行这些子程序。也即在语法分析过程中,当一个产生式获得匹配(对于自上而下分析)或用于归约(对于自下而上分析)时,此产生式相应的语义子程序进入工作,完成既定的翻译任务。 用语法制导翻译(SDTS)生成中间代码的要点如下: (1) 按语法成分的实际处理顺序生成,即按语义要求生成中间代码。 (2) 注意地址返填问题。 (3) 不要遗漏必要的处理,如无条件跳转等。 例如下面的程序段: if (i>0) a=i+e-b*d; else a=0; 在生成中间代码时,条件“i>0”为假的转移地址无法确定,而要等到处理“else”时方可确定,这时就存在一个地址返填问题。此外,按语义要求,当处理完(i>0)后的语句(即“i>0”为真时执行的语句)时,则应转出当前的if语句,也即此时应加入一条无条件跳转指令,并且这个转移地址也需要待处理完else之后的语句后方可获得,就是说同样存在着地址返填问题。对于赋值语句a=i+e-b*d,其处理顺序(也即生成中间代码顺序)是先生成i+e的代码,再生成b*d的中间代码,最后才产生“-”运算的中间代码,这种顺序不能颠倒。 4.3 令S.val为文法G[S]生成的二进制数的值,例如对输入串101.101,则S.val= 5.625。按照语法制导翻译方法的思想,给出计算S.val的相应的语义规则,G(S)如下: G[S]: S→L.L|L

2017ITE第八章题目及答案

?Assessment Results ?Item Feedback Report IT Essentials (Version 6.00) - ITE 第8 章 Below is the feedback on items for which you did not receive full credit. Some interactive items may not display your response. Subscore: 1 用户注意到用户计算机中千兆位网卡的数据传输速率比预期要慢 的可能原因是什么? 正确响应您的响应 网卡双工设置不知何故已经设为半双工。 休眠模式导致网卡意外关闭。 网卡LAN 唤醒设置配置错误。 网卡配置为同时使用IPv4 和IPv6。 为了获得最佳的性能,千兆位网卡应该在全双工模式下运行。两台设备之间的双工模式不匹配可 全双工传输允许在每个方向上实现1000 Mb/s 的传输速率。 此试题参考以下领域的内容: IT Essentials ?8.1.1 网络卡 2 通常网卡上有两个LED。这些LED 的两个主要用途是什么?(选择两项 正确响应您的 响应 表示网卡已连接到家庭组或工作组

表示存在连接 表示存在数据传输活动 表示有来自另一邻近无线设备或电子设备的干扰 表示网卡已连接到DHCP 服务器 以太网网卡通常有两个LED,有时两个都呈绿色,有时一个呈绿色,一个呈琥珀色。一个指示灯表示存在与活 如路由器或网络交换机。另一个LED 闪烁表示有数据活动。 此试题参考以下领域的内容: IT Essentials ?8.1.1 网络卡 3 用于在Windows PC 上建立新网络连接的网络配置文件 的作用是什么? 正确响应您的 响应 提供可能用于Internet 访问的ISP 列表 消除连接网络时对IP 地址的需求 提供一种轻松的方法,根据要加入的网络类型来配置或应用网络功能 配置网卡设置,实现最快的网络 配置新网络连接时需要选择一个Windows 网络位置。网络位置配置文件是一个网络设 置集合,默认已为每类位置创建了该文件,这种文件可帮助用户轻松地加入一个网络。 此试题参考以下领域的内容: IT Essentials ?8.1.2 无线和有线路由器配置

编译原理第4章答案

第四章 词法分析 1.构造下列正规式相应的DFA : (1) 1(0|1)* 101 (2) 1(1010* | 1(010)* 1)* (3) a((a|b)*|ab *a)* b (4) b((ab)* | bb)* ab 解: (1)1(0|1)* 101对应的NFA 为 下表由子集法将NFA 转换为DFA : (2)1(1010* | 1(010)* 1)* 0对应的NFA 为 下表由子集法将 NFA 转换为DFA :

(3)a((a|b)*|ab*a)* b (略) (4)b((ab)* | bb)* ab (略) 2.已知NFA=({x,y,z},{0,1},M,{x},{z})其中:M(x,0)={z},M(y,0)={x,y},M(z,0)={x,z},M(x,1)={x}, M(y,1)=φ,M(z,1)={y},构造相应的DFA。 解:根据题意有NFA图如下

0,1 下表由子集法将NFA转换为DFA: 下面将该DFA最小化: (1)首先将它的状态集分成两个子集:P1={A,D,E},P2={B,C,F} (2)区分P2:由于F(F,1)=F(C,1)=E,F(F,0)=F并且F(C,0)=C,所以F,C等价。由于F(B,0)=F(C,0)=C, F(B,1)=D,F(C,1)=E,而D,E不等价(见下步),从而B与C,F可以区分。有P21={C,F},P22={B}。 (3)区分P1:由于A,E输入0到终态,而D输入0不到终态,所以D与A,E可以区分,有P11={A,E},P12={D}。 (4)由于F(A,0)=B,F(E,0)=F,而B,F不等价,所以A,E可以区分。 (5)综上所述,DFA可以区分为P={{A},{B},{D},{E},{C,F}}。所以最小化的DFA如下: 3.将图 4.16确定化: 图4.16 解:下表由子集法将NFA转换为DFA: 1

编译原理课后习题答案+清华大学出版社第二版

第 1 章引论 第1 题 解释下列术语: (1)编译程序 (2)源程序 (3)目标程序 (4)编译程序的前端 (5)后端 (6)遍 答案: (1)编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言,则此翻译程序称为编译程序。 (2)源程序:源语言编写的程序称为源程序。 (3)目标程序:目标语言书写的程序称为目标程序。 (4)编译程序的前端:它由这样一些阶段组成:这些阶段的工作主要依赖于源语言而与目标机无关。通常前端包括词法分析、语法分析、语义分析和中间代码生成这些阶 段,某些优化工作也可在前端做,也包括与前端每个阶段相关的出错处理工作和符 号表管理等工作。 (5)后端:指那些依赖于目标机而一般不依赖源语言,只与中间代码有关的那些阶段,即目标代码生成,以及相关出错处理和符号表操作。 (6)遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。 第2 题 一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。 答案: 一个典型的编译程序通常包含8个组成部分,它们是词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、中间代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。其各部分的主要功能简述如下。 词法分析程序:输人源程序,拼单词、检查单词和分析单词,输出单词的机内表达形式。 语法分析程序:检查源程序中存在的形式语法错误,输出错误处理信息。 语义分析程序:进行语义检查和分析语义信息,并把分析的结果保存到各类语义信息表中。 中间代码生成程序:按照语义规则,将语法分析程序分析出的语法单位转换成一定形式的中间语言代码,如三元式或四元式。 中间代码优化程序:为了产生高质量的目标代码,对中间代码进行等价变换处理。目标代码生成程序:将优化后的中间代码程序转换成目标代码程序。

编译原理:学习指导与典型题解析

(1)——不是NFA的成分o A.有穷字母表B.初始状态集合 c.终止状态集合D.有限状态集合 (北京航天航空大学研究生入学考试试题 (2)——不是编译程序的组成部分0 A.词法分析程序B.代码生成程序 c.设备管理程序D.语法分析程序 (北京航天航空大学研究生入学考试试题 解答 (1)B,(2)C 例题2.2 给出下面描述的正规表达式 (1)以0l结尾的二进制数串; (2)能被5整除的十进制整数; (3)包含奇数个t或奇数个0的二进制数串 解题思路 (1)分析题意,要求的是二进制串,即由0和1构成的串,并且必须以ot结尾,所以 本题可以分两部分去完成,一部分实现由o和1构成的任意串,一部分即01,然后将它们连接到一起就可以了,所以本题的解答是:(1|0)*01 (2)分析题意,本题要求是十进制整数,也就是由o09这10个数字组成的字符串, 并且不能以o开头(整数“o”除外),要求能被5整除,则该串必须以0或者5结尾0根据我们的分析,可以把本题分成两种情况考虑:一种情况是该整数只有1位,则该整数有0 和5两种可能;另外一种情况是该整数有多位,则该整数可以分成3部分考虑,一是第l 位必须不为0,二是最后1位必须为0或5,三是中间部分可有可无,并且可以由0…9之间任意数字构或,所以本题的正规表达式为:(1|2|3|4|5|6|7|8|9) (0|1|2|3|4|5|6|7|8|9)*(0|5)| (0|5) (3)本题求二进制串,并且要求包含奇数个0或奇数个1,由于o和1都可以在二进制串 中任何地方出现,所以本题只需要考虑一种情况,另外一种情况也可以类似求得0考虑包含奇数个0的字符串:由于只关心0的个数的奇偶数,我们可以把二进制串分成多段来考虑,第1段为二进制串的开始到第1个0为止,这一段包含1个o,并且0的前面有0个或多个l,对于剩下的二进制串按照每段包含两个0的方式去划分,即以o开始,以0结尾,中间可以有0个或多个1,如果一个二进制串被这样划分完后,剩下的部分如果全部是全1串(这些全1串在前面划分的串之间或最后),则该二进制串就具有奇数个o,所以该二进制串可以这样描述:以第1段(1‘o)开始.后面由全1串(1‘)以及包含两个o的串(ol0o)组成,所以包含奇数个0的正规表达式为:100(1[ol’o]‘,本题的解答则是:1*0(1|01*0)*|0*1(0|10*1)*

相关文档
最新文档