编译原理习题课(词法分析)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.构造自动机A,使得它识别字母表{a,b}上的符 号串,但符号串不能含有两个相邻的a,也不能 含有两个相邻的b. 解:正规文法为: S→aB | bA | a | b | ε A→aB | a B→bA | b
5.构造自动机A,使得它识别字母表{0,1}上的符 号串,这些符号串由任意的1,0和随后任意的 11,00对组成. 解:正规表达式为 (1 | 0 )* (11 |00)*
3.一个文法G[Z]若存在推导Z=>…Z…则称G[Z]是 递归 无穷 _____文法,这类文法所产生的句子有____个. 4.编译过程中扫描器所完成的任务是从字符串形 源程序 式的_______中识别出一个个具有独立意义的最 单词 小语法单位------________. ------________ 5.高级语言程序设计的单词通常分为五类,它们 保留字 标识符 常量 运算符 界符 是______,______,______,______,______.
5.有文法 G[S]=( {S , A , B } , {a , b} , P , S ) 其中P为: S→AB | AS A→a | aA B→b |bb b 则图所示的语法树中,_____正确的描述了对符号 串"aaabb"的推导过程.
6.下列工作中,由编译程序扫描器完成的任务有______. 下列工作中,由编译程序扫描器完成的任务有 a…g 下列工作中 a.组织源程序的输入 组织源程序的输入 b.按词法规则分割出单词,识别出其属性 按词法规则分割出单词, 按词法规则分割出单词 c.删除注解 删除注解 d.删除空格以及无用字符 删除空格以及无用字符 e.行计数,列计数 行计数, 行计数 f.发现并定位词法错误 发现并定位词法错误 g.建立符号表 建立符号表 7.假设正在为 假设正在为PASCAL语言构造编译程序,下述单词中, 语言构造编译程序, 假设正在为 语言构造编译程序 下述单词中, c _______不需要超前搜索即可识别. 不需要超前搜索即可识别. 不需要超前搜索即可识别 a. end b.case c. :=
Biblioteka Baidu单词 6.词法分析程序的输出形式为_______,每一个 单词 单词种别码 单词自身值 ______由_________和________两部分组成.
+
二.判断题
(×)1.编译程序的输入是高级语言程序,输出是 机器语言程序. (×)2.每一个编译程序都由词法分析,语法分析, 语义分析,代码优化,代码生成五部分组成. (×)3.可以使用相同的编译程序在不同类型的计 算机上对同一种高级语言的程序进行翻译. × ( )4.一个语言的文法是唯一的. (√ )5.若一个语言的句子有无穷多个,则对应的 文法必定是递归的. √ ( )6.正规文法不能产生语言L={anbn|n≥1}.
6.构造文法G[Z]的自动机,该自动机是确定的吗?写出相 应的语言. G[Z] : Z→A0 A→A0 | Z1 | 0 解:左线性文法,其NFA为 :
0 => S 0 0 A 1 Z
该自动机不确定,语言为: L(G[Z])={a|a是由0和1组成的以0开头结尾的符号串,并且 该符号串不含有两个连续的1} 正规式为: 0(0|01)*0
2.把下面的文法改写成无二义性文法. S→SS | (S) | ( ) 原因: S→SS 对于( ) ( ) ( )存在两棵语法树 改写: S→AS | (S) | ( ) A→(S) | ( ) 3.化简文法: G[S]:S→Bab | cC B→b | bS C→Da D→Cb | CDa
化简为: S→Bab B→b | bS
10.设有穷自动机的状态图如图所示,其中,状态 ①为开始状态,状态③为终止状态.下述正规 c 表达式中_______不可被该有穷自动机接受. a.0(10)*0 b.11(01)*1 c.1(101)*00
四.解答题
1.已知语言求文法 (1).构造语言L(G[S])={ (n )n | n≥0 } 的文法. 句子结构特征: L={ε,(),(( )),((( ))),…} 文法为: G[S] : S→(S) | ε (2).构造语言L(G)={ am bn | n>m>0 } 的文法. 单独生成am 或bn 可以用 A→Aa|a B→Bb|b 要考虑句子中b的个数大于a的个数,因此文法为 G[S]: S→Ab | Sb A→aAb | ab
√ ( )7.上下文无关文法可以产生语言 L={anbnci | i≥1 , n≥1}. × ( )8.一个句型对应的一棵语法树包括了该句型 的所有推导. √ ( )9.对每一个左线性文法G1,一定存在一个右 线性文法G2,使得L(G1)=L(G2). (×)10.存在这样一些语言,它们能被确定的有穷 自动机识别,但不能用正规式表示. (×)11.每一个DFA都对应有唯一的一个NFA. √ ( )12.每一个NFA都对应有唯一的一个最小化的 DFA.
7.
五,课堂作业
构造下述正规表达式的最小化DFA: xy* | yx*y | xyx (注意:最小化DFA 为6个状态)
�
3.如果一个文法满足 a,b,c,d ,则称该文法是二义文法. 如果一个文法满足_______,则称该文法是二义文法. 如果一个文法满足 a.文法的某一个句子存在两棵以上的语法树. 文法的某一个句子存在两棵以上的语法树. 文法的某一个句子存在两棵以上的语法树 b.文法中存在某个句子,它有两个以上的最右(或最左) 文法中存在某个句子, 文法中存在某个句子 它有两个以上的最右(或最左) 推导. 推导. c.文法中存在某个句子,它有两个以上的最右(或最左) 文法中存在某个句子, 文法中存在某个句子 它有两个以上的最右(或最左) 归约. 归约. d.在进行归约时,文法的某些规范句型的句柄不唯一. 在进行归约时, 在进行归约时 文法的某些规范句型的句柄不唯一. 4.下述正规表达式中,______描述了字母表 下述正规表达式中, e 描述了字母表{a,b}上长度不 下述正规表达式中 描述了字母表 上长度不 的符号串. 为3的符号串. 的符号串 a. (ε|0|1|00|01|10|11) ( (0|1) (0|1) *) b. ε|0|1|00|01|10|11| (0|1) (0|1) + c. ε|0|1 (00|01|10|11) + (0|1) * d. ε|0|1 (00|01|10|11) * e. 没有一个
词法分析习题课 一,填空题
1.设文法G[<id>]的产生式是 <id>→a | b | c | <id>a | <id>c | <id>0 | <id>1则 a,b,c,0,1 文法的终结符号集合VT=________ ,非终结符号 <id> 集合VN=__________. 2.高级程序设计语言的翻译主要有两种方式: 编译方式 解释方式 ________和________.二者的根本区别在于 __________________. 是否生成目标代码
三.选择题
d 1.文法G所描述的语言是_____的集合. a.文法G的字母表∑中所有符号组成的符号串. b.文法G的字母表∑的闭包V*中所有符号串. c.由文法的识别符号推出的所有符号串. d.由文法的识别符号推出的所有终结符号串. 2.设文法G[<id>]的产生式是 <id>→a | b | c | <id>a | <id>c | <id>0 | <id>1 a,c,f 则下列符号串中为该文法句子的是_______. a.a b.ab0 c.a0c01 d.0a e.11 f.aaa
(3).L={w | w∈{0,1}+ , 且w不含两个相邻的1} G[S] : S→0 | 1 | 0S | 1A A→0S | 0 (4).L(G)={α | α∈{a , b}+ , 且α中含相同个数的a和b} G[S] : S→aSbS | bSaS | ab | ba | ε 或G[S] : S→aSb | bSa | abS | Sab | baS | Sba |ab | ba (5).已知语言L={x | x∈{a,b,c}* , 且x中符号的排列 是对称的} .例如:aabcbaa , aabbaa . G[S] : S→aSa | bSb | cSc | a | b | c | ε
8.下述正规表达式中 d,e 下述正规表达式中_______与(a*+b)*(c+d)等价. 等价. 下述正规表达式中 与 等价 a.a*(c+d)+b(c+d) b. a*(c+d)*+b(c+d)* c. a*(c+d)+b*(c+d) d. (a+b)*c+(a+b)*d e. (a*+b)*c+(a*+b)*d 9.已知文法 定义为:G=( {S,W,X,Y,Z} , {x,y,z} , P , S ) 已知文法G定义为 已知文法 定义为: 与该文法描述相同语言的正规表达式有_______. 与该文法描述相同语言的正规表达式有 b . 其中P为 a.xx* | yy* | zz* 其中 为 S→WZ W→X | Y b. (xx* | yy* ) zz* X→x | xX c. xx* ( yy* | zz*) Y→y | yY d. (xx | yy)* zz* Z→z | zZ e. xx* yy* zz*