第三章 词法分析作业
- 格式:doc
- 大小:101.00 KB
- 文档页数:3
第三章词法分析本章要点1.词法分析器设计,2.正规表达式与有限自动机,3.词法分析器自动生成。
本章目标:1.理解对词法分析器的任务,掌握词法分析器的设计;2.掌握正规表达式与有限自动机;3.掌握词法分析器的自动产生。
本章重点:1.词法分析器的作用和接口,用高级语言编写词法分析器等内容,它们与词法分析器的实现有关。
应重点掌握词法分析器的任务与设计,状态转换图等内容。
2.掌握下面涉及的一些概念,它们之间转换的技巧、方法或算法。
(1)非形式描述的语言↔正规式(2)正规式→ NFA(非确定的有限自动机)(3)NFA→ DFA(确定的有限自动机)(4)DFA→最简DFA本章难点(1)非形式描述的语言↔正规式(2)正规式→ NFA(非确定的有限自动机)(3)NFA→ DFA(确定的有限自动机)(4)DFA→最简DFA作业题一、单项选择题(按照组卷方案,至少15道)1. 程序语言下面的单词符号中,一般不需要超前搜索a. 关键字b. 标识符c. 常数d. 算符和界符2. 在状态转换图的实现中,一般对应一个循环语句a. 不含回路的分叉结点b. 含回路的状态结点c. 终态结点d. 都不是3. 用了表示字母,d表示数字, ={l,d},则定义标识符的正则表达式可以是:。
(a)ld*(b)ll*(c)l(l | d)*(d)ll* | d*4. 正规表达式(ε|a|b)2表示的集合是(a){ε,ab,ba,aa,bb} (b){ab,ba,aa,bb}(c){a,b,ab,aa,ba,bb} (d){ε,a,b,aa,bb,ab,ba}5. 有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所对应的状态转换图为。
6. 有限状态自动机可用五元组(V T,Q,δ,q0,Q f)来描述,设有一有限状态自动机M的定义如下:V T={0,1},Q={q0,q1,q2},Q f={q2},δ的定义为:δ(q0,0)=q1δ(q1,0)=q2δ(q2,1)=q2δ(q2,0)=q2M所能接受的语言可以用正则表达式表示为。
编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要课程之一,它研究的是将高级语言程序转化为机器语言的过程。
在编译原理的学习过程中,练习题是提高理解和应用能力的重要途径。
本文将为大家提供编译原理第三章的练习题答案,希望能够对大家的学习有所帮助。
1. 什么是词法分析?请简要描述词法分析的过程。
词法分析是编译过程中的第一个阶段,它的主要任务是将源程序中的字符序列划分为有意义的词素(token)序列。
词法分析的过程包括以下几个步骤:1)扫描:从源程序中读取字符序列,并将其转化为内部表示形式。
2)识别:根据预先定义的词法规则,将字符序列划分为不同的词素。
3)分类:将识别出的词素进行分类,如关键字、标识符、常量等。
4)输出:将分类后的词素输出给语法分析器进行进一步处理。
2. 什么是正则表达式?请给出一个简单的正则表达式示例。
正则表达式是一种用于描述字符串模式的工具,它由一系列字符和操作符组成。
正则表达式可以用于词法分析中的词法规则定义。
以下是一个简单的正则表达式示例:[a-z]+该正则表达式表示匹配一个或多个小写字母。
3. 请简要描述DFA和NFA的区别。
DFA(Deterministic Finite Automaton)和NFA(Nondeterministic Finite Automaton)是有限状态自动机的两种形式。
它们在词法分析中常用于构建词法分析器。
DFA是一种确定性有限状态自动机,它的状态转换是确定的,每个输入符号只能对应一个状态转换。
相比之下,NFA是一种非确定性有限状态自动机,它的状态转换是非确定的,每个输入符号可以对应多个状态转换。
4. 请简要描述词法分析器的实现过程。
词法分析器的实现过程包括以下几个步骤:1)定义词法规则:根据编程语言的语法规范,定义词法规则,如关键字、标识符、常量等。
2)构建正则表达式:根据词法规则,使用正则表达式描述不同类型的词素。
3)构建有限状态自动机:根据正则表达式,构建DFA或NFA来识别词素。
第三章 词法分析知识结构:功能 词法分析器的要求 单词符号分类 词法分析 单词内部形式器的设计 设计方发词法分析器的设计 状态图词法分析器组成正规表达式单词描述工具 正规集词法分析器 正规文法确定有限自动机(DFA )单词识别工具 非确定有限自动机(NFA )DFA 的最小化FA 的等价转换等价转换FA 的等价转换第一节 对词法分析器的要求一、词法分析器的功能输入源程序,输出单词符号(二元式表示)。
关键字:是由程序语言定义的具有固定意义的标识符。
标识符:用来表示各种名字,如变量等。
常数:常数的类型有整型,实型等。
运算符:算术运算符,关系运算符,逻辑运算符。
界限符:逗号,分号等。
三、单词符号内部的表示形式内部的单词符号TOKEN字(二元式),TOKEN字占用机器字的长度,依据信息量的多少而定。
1、TOKEN字结构CLASS:用整数表示。
VALUE:表示单词符号的属性(符号表指针)。
2、TOKEN的作用CLASS:用于语法分析器对源程序结构的分析。
VALUE:用于语义分析器对源程序具体操作的分析。
3、单词种别码划分原则CLASS:关键字,运算符,界限符(编译程序定义的符号)使用一字一种编码。
VALUE值省略。
VALUE:标识符,常数(用户定义的符号),存放符号表常数表的指针。
标识符,常数每一类为一种编码。
例:BEGIN A:= B END;词法分析结果:符号表(BEGIN,---- )Array(A ,K1 ) K1(:= ,--- )(B ,K3 ) K3(END ,--- )(;,--- )四、词法分析器的结构1、一遍扫描(交互式结构)。
2、多遍扫描(独立式结构)。
第二节词法分析器的设计一、设计步骤1、确定词法分析器的接口关系;2、确定单词分类和TOKEN字的结构;3、对每一类单词构造状态转换图;4、根据状态转换图设计算法。
二、功能描述1、组织源程序输入;2、按词法规则拼读单词符号,并转换成二元式;3、删除注解行,空格和无用符号;4、检查词法错误。
第三章词法分析(作业)
1、求正则式(a|b)(a|b|0|1)*对应的正则文法(右线性文法),画状态转换图。
解:(a|b):S—>a|b
(a|b|0|1)*:A—>aA|bA|0A|1A
合并: S—>a|b
A—>aA|bA|0A|1A| ε
2、已知正则文法 G[Z]:Z0Z|1Z|0A
A0B
B0
(1)求对应的正则式?
(2)G[Z]所描述的语言?
解:
1)(0|1)*000
2)G[Z]所描述的语言是L(G[Z])={x|x∈(0|1|000)}
3、已知有限自动机如图
(1)以上状态转换图表示的语言有什么特征?
(2)写出其正规式与正规文法.
(3)构造识别该语言的有限自动机 DFA.
解:
(1)L={W |W {0,1},并且W至少有两个连续的1}
(2)正则式为(0|1)*11(0|1)*
正则文法G(Z)为:
Z—>0Z|1Z|1A
A—>1B|1
B—>0B|1B|0|1
(3)将图中有限自动机确定化:
首先从处态A出发:
I I0 I1
(1){A} (1){A} (2){A,B}
(2){A,B} (1){A} (3){A,B,C}
(3){A,B,C} (4){A,C} (3){A,B,C}
(4){A,C} (4){A,C} (3){A,B,C}
其相应的DFA如下图:
将这个DFA最小化:
首先分终态和非终态两个集K1={1,2} 和 K2={3,4}。
由于状态1输入1到达状态K1集,而状态2输入1到达K2集故将k1分为K11={1}, K12={2}。
由于状态3,和 4 输入1,或0 都到达k2集,所以状态3,4等价。
则可以分割成三个子集:{1},{2},{3,4}
所以将DFA最小化的状态图如下:
4、请构造与正则式 R=(a*b)*ba(a|b)* 等价的状态最少的 DFA(确定有限自动机)
解:
(1)首先构造转换系统图:
(2)由系统转换图构造DFA(NFA确定化)设初态为[S, A, B, G,F]
NFA确定化为DFA的过程:
I Ia Ib
(1)[S,A,B,G,F] (2)[G,F] (3)[A,B,C,G,F]
(2)[G,F] (2)[G,F] (4)[A,B,G,F]
(3)[A,B,C,G,F] (5)[D,F,G,E,Z] (3)[A,B,C,G,F]
(4)[A,B,G,F] (2)[G,F] (3)[A,B,C,G,F]
(5)[D,F,G,E,Z] (6)[G,F,E,Z] (7)[A,B,E,Z,G,F]
(6)[G,F,E,Z] (6)[G,F,E,Z] (7)[A,B,E,Z,G,F]
(7)[A,B,E,Z,G,F] (6)[G,F,E,Z] (8)[A,B,C,E,Z,G,F]
(8)[A,B,C,E,Z,G,F] (5)[D,F,G,E,Z] (8)[A,B,C,E,Z,G,F]
DFA确定有限自动机状态图如下:
(3)将DFA最小化:
先将终态和非终态分成两个集: K1={1,2,3,4} , K2={5,6,7,8}。
对于K1中的3态输入a则进入K2集,而1,2,4态输入a仍然在K1中,故K1可一分为二K11={1,2,4}和K12={3};考察K11对于1,4态输入b到达3态而2态输入b到达4态,故K11可一分为二K111={1,4}; K112={2}最后考
察K2输入a或b都到达K2集,则DFA化简为{1,4},{2},{3},{5,6,7,8}四个子集。
其状态图如下:。