编译原理习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章词法分析练习
3.1给出一个正则表达式和自动机,使之表示满足下面条件的0、1序列:
1)只包含两个1。
2)不包含连续的1。
3)包含偶数个1。
3.2写出下面符号串集的正则表达式:
1){a,b,c}a偶数出现
2){a,b,c}不包含子串baa
3)二进制数,大于101001
4)二进制数,4的倍数
5)偶数个0奇数个1的0/1串
3.3构造识别下列正则表达式定义的NFA:
1)(a|(b)+
2)(a*|(b*)*
3)(a|(bc)*d*
4)((0|1)*(2|3)*)|0011
5)(a|b)*abb(a|b)*
3.4为下列正则表达式构造极化的DFA:
1)(a|b)*a(a|b)
2)(a|b)*a(a|b)(a|b)
3.5利用自动机原理构造模式匹配程序,即构造一个程序,使它能识别给定a/b串是不
是a i b j a k b m类串:,其中i和j是大于等于0的整数,而k和m是大于0的整数。
3.5将下面不确定自动机NFA转换为确定自动机DFA:
3.6将下面不确定自动机NFA转换为确定自动机DFA:
3.7试将下面不确定自动机NFA转换为确定自动机DFA:
3.8试写出下面确定自动机DFA的正则表达式:
3.9设置一个名字表NameL和整数表ConstL,当遇到标识符时,将其字符串送入名字
表NameL,并把其名字表地址作为标识符的Value值。整常数情形也一样,不要求翻译成二进制数。要求在NameL表和ConstL表中没有相同元素。试用C语言写一个针对上述单词集的词法分析器。
单词class value
begin BeginSymb
end EndSymb
var VarSymb
integer IntSymb
if IfSymb
then ThenSymb
else ElseSymb
;SemiSymb
:ColonSymb
:=AssigSymb
<=LittEquiSymb 标识符IdentSymb名字表地址 整常数ConstSymb常数表地址 3.10实数的语法定义如下面所述: <实数>::=<整数部分><小数部分><指数部分> <整数部分>::=<数字>|<整数部分><数字> <小数部分>::=ε|.<整数部分> <指数部分>::=ε|e<指数符号><整数部分> <指数符号>::=ε|+|- 试写出实数的非确定自动机。 3.11试写出3.10题中实数的确定自动机; 3.12试写出3.10题中实数的正则表达式。 3.13当构造词法分析器时,根据单词的正则表达式定义首先构造NFA,之后将NFA 转换成DFA,并用其DFA进行词法分析。从正则表达式到NFA的转换速度快,而 NFA到DFA的转换速度比较慢,因此在某些场合下,用NFA并按NFA到DFA 的转换思想进行词法分析可能是很有意思的。就是说,在NFA的一个状态下, 遇到一个字符时,用NFA到DFA时的构造技术确定下一状态。试写出算法。 第四章语法分析练习 4.1 将下列正则表达式转换成上下文无关文法:1)((ab *a)|(ba *b))|ε 2)((0|1)+ "."(0|1)*)|(((0|1)*"."(0|1)+))3)(a|b)*a(a|b)(a|b) 4.2 我们称如下形式的上下文无关文法叫做ε-正则文法,即其产生式具有下面形式: A→aB 或A→εB 或A→a 其中A 和B 是非终极符,a 是终极符。要求把下面自动机(确定)转换成ε-正则文法,其中A 是初始状态,而C 是接受状态。 确定自动机状态转换矩阵 4.3 把下面自动机(非确定)转换成上ε-正则文法,其中A 和B 是初始状态,而C 是接受状态。 非确定自动机状态转换矩阵 4.4已给定下面ε-正则文法,试将其转换成非确定自动机。 S→εA |εB A→aA |aC |bB |bC|εB B→aA |aC |bB |εC C→aB |aC |ε 4.5试将题4.4中给定的ε-正则文法转换成确定自动机。 4.6 试将题4.4中给定的ε-正则文法转换成正则表达式。提示:用消除法消除开始符以外的非终极符。关键知识:C→aC |α,可转换成C→a *α, 4.7试给出将ε-正则文法,转换成确定正则文法,但允许开始符有ε产生式。这相当于从 NFA 到DFA 的转换。 4.8形如A→A α的产生式称为左递归的,类似地称B→βB 的产生式为右递归的。证明如 果一个非终极符既有左递归式,又有右递归式,则文法一定有二义性。 4.9试给出一个算法,它判定文法中有哪些非终极符是不可能出现于任何句型中,称这 种非终极符为不可到达符号。 4.10试给出一个算法,它判定文法中有哪些非终极符是不可能导出任何终极符串。4.11形如A→ε的产生式为空产生式,以例说明任何含空产生式的文法均可转换成无空 产生式的等价文法(可能只差一个空句子)。 4.12下列哪些文法是LL(1)文法? a b A A B B C B C C a b ε A A,C B,C B B A, C B C C B,C