2013-2014编译原理考试
《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。
( X )2.一个句型的直接短语是唯一的。
( X )3.已经证明文法的二义性是可判定的。
( X )4.每个基本块可用一个DAG表示。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)6.2型文法一定是3型文法。
( x )7.一个句型一定句子。
( X )8.算符优先分析法每次都是对句柄进行归约。
(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )11.一个优先表一定存在相应的优先函数。
( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )13.递归下降分析法是一种自下而上分析法。
( )14.并不是每个文法都能改写成LL(1)文法。
( )15.每个基本块只有一个入口和一个出口。
( )16.一个LL(1)文法一定是无二义的。
( )17.逆波兰法表示的表达试亦称前缀式。
( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )19.正规文法产生的语言都可以用上下文无关文法来描述。
( )20.一个优先表一定存在相应的优先函数。
( )21.3型文法一定是2型文法。
( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
( )二、填空题:1.( 最右推导 )称为规范推导。
2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。
4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。
5.语法分析器的输入是(),其输出是()。
6.扫描器的任务是从()中识别出一个个()。
2014编译原理期末复习 题目答案

⒈编译程序的工作过程一般可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和代码生成等几个基本阶段,同时还伴有表格处理和出错处理。
⒉若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
⒊编译方式与解释方式的根本区别在于是否生成目标代码。
⒋翻译程序是这样一种程序,它能将用甲种语言书写的程序转换成与其等价的乙种语言书写的程序。
⒌对编译程序而言,输入数据是源程序,输出结果是目标程序。
⒍运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机。
⒎当把编译程序划分成编译前端和编译后端时,前端主要由与源语言有关但与目标机无关的部分组成,编译后端包括编译程序中与目标机有关的部分,编译后端不依赖于源语言而仅仅依赖于中间语言。
⒏描述词法规则的有效工具是正规式,通常使用上下文无关文法来描述语法规则,使用属性文法描述语义规则。
⒐上下文无关文法包括以下四个组成部分:一组终结符号,一组非终结符号,一个开始符号,以及一组产生式。
⒑如果一个文法存在某个句子对应两棵不同的语法树,则这个文法是二义文法。
⒒消除文法的二义性的方法主要有:改写二义文法为非二义文法;为文法符号规定优先顺序和结合规则。
⒓自上而下语法分析中存在的主要问题是由左递归引起的无限循环问题和左公共因子引起的回溯问题。
⒕自上而下语法分析的基本思想是,对任何输入串,从文法的开始符号,即根结点出发,自上而下地为输入串建立一颗语法树。
递归下降分析器采用的是自上而下语法分析方法,非递归的预测分析器采用的是自上而下语法分析方法,LR分析器采用的是自下而上语法分析方法。
⒖预测分析器模型是由输入、输出、栈、总控程序和预测分析表组成。
⒗自下而上语法分析的基本思想是,从终结符号开始,逐步进行规约,直至规约到文法的开始符号,即从语法树的叶节点开始,步步向上规约,直到根结。
⒘LR分析器模型包括输入、输出、LR分析程序、栈和含有动作action与状态转换goto两部分的分析表。
2013-2014-2编译原理试卷A带答案-推荐下载

2013– 2014学年第二学期 计算机科学与技术专接本专业编译原理试卷(A )卷一、填空题(每空2分,10个空,共20分,请将正确的答案填写在答题纸上)1.若将X 语言的源程序翻译成Y 语言的程序,翻译的实现语言为Z 语言,则称Z 语言是翻译的 宿主 语言2.设有字母表Σ={a,bb,c},字母表Σ上的符号串ω=abbc、,则|ω3|=93.设有有限自动机如下图所示,设I={x},则Ib={ 1,2,3 }4.语言中具有独立意义的最小语法单位是 单词5.设有文法S→ABc A→a|ε B→b|ε,则First(S)={ a,b,c }6.规范归约中的可归约串是指(句柄)。
7.中间代码产生是依据语言的 语义 规则进行的8.存储分配的基本单元是过程的 活动记录9.在基本块范围内的优化称为 局部优化10.在目标代码生成阶段,符号表是 地址分配___的依据。
二、选择题(每题2分,10题,共20分)(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填在答题纸上。
错选、多选或未选均无分。
)题 号一二三四五合计得 分阅卷人河北科技师范学院装订线系(部)班 级学 号姓 名1.目前最常用的文法表示方法为………………………………( A )A. BNF 表示法B.YACCC. LexD. DAG2. 下图所示自动机所描述的语言是…………………………………………( B)A. aa(ε(a|b)*(a|b))B. aa((a|b)*|ab)C. aa((a|b)|ab)D. aa((a|b|ab)*3. 词法分析器的输出结果是…………………………………………………( C )A .单词的种别编码B .单词在符号表中的位置C .单词的种别编码和属性值D .单词属性值4. 在自顶向下的语法分析方法中,分析的关键是…………………………( D )A. 寻找句柄B. 寻找句型C. 消除递归D. 选择候选式5.设有文法G[S]为:S →AB A →Aa|bB B →a|Sb ,下面哪个不是句型 baSb 的短语…………………………………………………………………………………( C)A. baSbB. SbC.aSbD. ba6. 在编译过程中,引起源程序发生质的变化的阶段是………………………( B )A. 语法分析B. 语义分析C. 词法分析D. 中间代码生成7. 常用的两种动态存贮分配办法是 动态分配和 动态分配………( A)A. 栈式、堆式B. 栈式、队列式C. 堆式、队列式D. 记录式、队列式8. 有代码为 x=a+b+c; y=a+b+d;可以采用的优化方法是 ……………………………………………………(B5b a)A. 常量的合并与传播B. 公共子表达式删除C. 无用赋值的删除D. 死代码删除9. 设有如下代码段,则其可以被划分的基本块的个数为……………………( C )Read NI=NJ=2L1:if I≤J goto L3I∶=I-JJ∶=J+1goto L1L3:Print ′YES′haltA. 2B. 3C. 4D. 510.经过编译所得到的目标程序是……………………………( D )A.四元式序列 B.间接三元式序列C.二元式序列 D.机器语言程序或汇编语言程序三、判断题(每题1分,10题,共10分)(对的打“√”号错误的打“×”,写在答题纸上)1.解释程序和编译程序的区别在于是否生成目标代码…………(√)2.若一个文法是递归的,则它所产生语言的句子个数必定是无穷的……………………………………………………………………(√)3.词法分析应遵循的是语义规则…………………………………(×)4.语法分析方法中的递归下降分析法属于自底向上分析方法…( × )5.算符优先分析法的实质就是借助优先关系来寻找可规约串…(√)6.编译中进行语法检查的目的是为了发现程序中所有错误……( × )7.中间代码产生是依据语言的语义规进行的…………………(√)8.环境把名字映射到左值,而状态把左值映射到右值…………(√)9.含有优化功能的编译程序执行效率高 …………………………(×)10.目标代码指令越丰富,代码生成的工作越复杂………………(×)四、简答题(共四小题,每题5分,共20分)1. 设有确定的有限自动机M:({1,2,3,4,5},{a,b},f,1,{4,5})f(1,a)=2 f(1,b)=3f(2,a)=2 f(2,b)=3f(3,a)=4 f(4,a)=5f(4,b)=3 f(5,a)=2画出其状态转换图和状态转换矩阵状态转换图2. 设文法G(S): S→(L)|Sa|a L→L,S|La|ab消除其左递归,写出写出左递归后的文法S→(L)S’|aS’S’ →aS’|εL→abL’L’ →,SL’|aL’|ε3. 有文法G(S):S→a|∧|(T)T→T,S|S求非终结符S和T的FIRSTVT和LASTVT答案:FIRSTVT(S)={a,∧,(}FIRSTVT(T)={,,a,∧,( }LASTVT(S)={ a,∧,)}LASTVT(T)={,,a,∧,)}4. 写出赋值语句 a=w+(a+b)*(c+d/(e-10)+8)的逆波兰式和四元式表示逆波兰式:wab+cde10-/+8+*=四元式:+ a b t1- e 10 t2/ d t2 t3+ c t3 t4+ t4 8 t5* t1 t5 t6+ w t6 t7= t7 a五、分析题(3小题,每题10分,共30分)1. 给定非确定的有限自动机M如下图所示将M确定化,并画出确定化后的状态转换图(要求:写出步骤)2.设有文法G[S]:S→bBS′S′→aBS′|εA→S|aB→Ac其LL(1)分析表如下a b c#S S→bBS′S′S′→aBS′S′→εS′→εA A→a A→SB B→Ac B→Ac利用此分析表判断输入串bacaac(改)是否为文法G[S]的句子,给出bacaac的分析过程3. 应用DAG对下面的基本块进行优化,写出优化后的基本块(要求写出过程)1. T0:=3.14 6. T3:=2*T02. T1:=2*T0 7. T4:=R+r3. T2:=R+r 8. T5:=T3*T44. A:=T1*T2 9. T6:=R-r5. B:=A 10. B:=T5*T。
编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A .非终结符号B .短语C .句子D .直接短语 4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
编译原理试题及答案

编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。
2. 简要描述编译过程中的四个基本步骤。
3. 解释词法分析器的功能和作用。
4. 解释语法分析器的功能和作用。
答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。
编译器是将高级语言文本转换成等价的机器语言的软件工具。
它负责将源代码转化为目标代码,以便计算机能够理解和执行。
2. (1) 词法分析:将源代码分解成一系列单词或标记。
(2) 语法分析:根据语法规则组织单词或标记形成语法树。
(3) 语义分析:分析语法树以检测语义错误。
(4) 代码生成:根据语法树生成目标代码。
3. 词法分析器的功能是将源代码分解成一系列单词或标记。
它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。
词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。
4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。
它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。
语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。
东师《编译原理2013春第一次在线作业

B. 正确
满分:2 分
15. 一个语言的文法是唯一的。
A. 错误
B. 正确
满分:2 分
16. 对于一个无二义性的文法,一棵语法树往往代表了多种最左推导过程。
A. 错误
B. 正确
满分:2 分
17. 在一个NFA中,几个等价状态可合并成一个状态。
B. 多余
C. 非确定
D. 无用
满分:3 分
17. 正则式的“*”读作什么()。
A. 并且
B. 或者
C. 连接
D. 闭包
满分:3 分
18. 方程X=rX+t的解是什么()。
A. X=rt*
B. X=t*r
C. X=r*t
D. X=tr*
满分:3 分
19. 存在这样的前后文无关语言,用来定义该语言的一切文法都是二义性的。通常把这样的语言称为什么()。
A. 自然二义性语言
B. 纯粹二义性语言
C. 前后文二义性语言
D. 先天二义性语言
满分:3 分
20. 把一个高级语言程序翻译成机器可执行的目标程序的工作由什么 完成()。
A. 短语结构
B. 前后文无关
C. 前后文有关
D. 正规
满分:3 分
10. 规范推导的每一步总是用产生式右边符号串替换句型中什么位置的非终结符号()。
A. 最左
B. 最右
C. 最中
D. 任意
满分:3 分
11. 通常把每个非终结符号的右部符号串称为该非终结符号的什么()。
A. 汇编程序
B. 解释程序
编译原理考试题及答案

编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。
答案:语义分析2. 编译器的后端主要负责________和目标代码生成。
答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。
答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。
答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。
答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。
2. 解释一下什么是语法制导翻译。
答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。
3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。
四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。
答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。
2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
编译原理考试试题

编译原理考试试题一、单项选择题1、编译原理中的“编译”一词指的是()。
A.将源代码转换为机器码B.将源代码转换为中间代码C.将源代码转换为汇编代码D.将源代码转换为目标代码2、在编译原理中,词法分析器的主要任务是()。
A.将源代码转换为中间代码B.将源代码转换为机器码C.将源代码转换为汇编代码D.识别源代码中的单词并确定其类别3、编译原理中的“语法分析”是指()。
A.根据语法规则将源代码转换为中间代码B.根据语法规则将源代码转换为机器码C.根据语法规则将源代码转换为汇编代码D.根据语法规则将源代码分解成单词和短语4、编译原理中的“语义分析”是指()。
A.检查源代码是否符合语法规则B.检查源代码是否有语义错误C.将源代码转换为中间代码D.将源代码转换为机器码5、编译原理中的“优化”是指()。
A.对中间代码进行优化,使其更加高效B.对机器码进行优化,使其更加快速C.对汇编代码进行优化,使其更加简洁明了D.对源代码进行优化,使其更加易于阅读和理解二、多项选择题1、编译原理中的“编译器”包括以下哪些部分?()A.词法分析器B.语法分析器C.语义分析器D.优化器E.目标代码生成器2、编译原理中的“中间代码”可以是以下哪些形式?()A.三码B.汇编语言C.目标代码D.机器码E.以上都不是3、编译原理中的“优化”包括以下哪些方面?()A.局部优化B.全局优化C.中间代码优化D.机器码优化E.以上都是4、下列哪些问题是编译原理所要解决的问题?()A.词法分析中的单词识别B.语法分析中的语法错误检查C.语义分析中的类型检查D.优化中的程序运行速度优化E.以上都是船舶原理考试试题一、选择题(每题2分,共20分)1、下列哪一项不是船舶推进器的种类?()A.螺旋桨B.喷水推进器C.桨扇推进器D.汽油机2、下列哪一项不是船舶舵的种类?()A.平衡舵B.半平衡舵C.非平衡舵D.球鼻艏3、船舶的阻力包括哪两种?()A.摩擦阻力和形状阻力B.波浪阻力和空气阻力C.兴波阻力和形状阻力D.摩擦阻力和兴波阻力4、下列哪一项不是船舶推进效率的表示方法?()A.有效功率与总功率之比B.有效推力与总推力之比C.船舶速度与主机转速之比D.有效功率与船舶速度的平方之比5、下列哪一项不是船舶操纵性的表示方法?()A.回转直径与船长的比值B.航向稳定性的时间常数C.最大转弯速度与船长的比值D.船舶横移速度与船长的比值二、简答题(每题10分,共30分)1、请简述船舶推进器选择的原则和依据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译程序是对高级语言程序进行翻译在规范规约中,用句柄来刻画可规约串动态存储分配是指在运行阶段为源程序的数据对象分配存储空间词法分析的输出结果是单词的种别编码和自身值正规式等价是指所识别的语言集相等优化可生成运行时间短且占内存少的代码程序【一】文法和语言编译程序和翻译程序的区别编译程序是整体编译完了,生成目标代码,再一次性执行。
解释程序是一边解释,一边执行,并不形成目标程序。
文法文法是描述语言的语法结构的形式规则(即语法规则)。
文法G:定义为四元组(VN,VT,P,S)VN为非终结符号的集合,VT为终结符号的集合,P为产生式的集合,S为开始符号,是一个非终结符,至少要在一条规则中作为左部出现。
文法分类0型文法短语文法递归可枚举语言1型文法上下文有关文法上下文有关语言2型文法上下文无关文法上下文无关语言3型文法正规文法正规语言句型假定G是一个文法,S是它的开始符号。
如果S⇒*(表示从S出发,经0步或若干步可推出α),则称α是一个句型。
句子仅含终结符号的句型是一个句子。
语言由文法G生成的语言记为L(G),它是文法G的一切句子的集合推导直接推导规约直接规约直接推导:仅当A —>γ是一个产生式,有v =αAβ,w= αγβ,αAβ⇒αγβ,称v直接推导到w, 记作v ⇒ w,也称w直接归约到v。
最左推导又称为规范推导。
语法树语法树的根结由开始符号所标记。
随着推导的展开,当某个非终结符被它的某个候选式所替换时,这个非终结符的相应结就产生了下一代新结。
每个新结和其父亲结间都有一条连线。
在一棵语法树生长过程中的任何时刻,所有那些没有后代的端末结自左至右排列起来就是一个句型。
二义文法如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。
也就是说,若一个文法存在某个句子,它有两个不同的最左(最右)推导,则这个文法是法是二义的。
文法的二义性证明:找出一个句子,它有两个不同的最左推导或最右推导短语语法树中一棵子树的所有叶子从左向右排列起来形成一个相对于子树根的短语。
直接短语只有父子两代的短语为直接短语。
句柄一个句型的分析树中,最左边的只有父子两代的子树的叶子从左向右排列起来形成构成此句型的句柄。
已知一上下文无关文法,对给定的句型,画出语法树,并求其短语,直接短语以及句柄。
例:对于文法G[S]S→ ( L) | aS |a L→ L, S | S画出句型( S ,(a))的语法树,求某一句型的短语, 直接短语, 句柄.短语:( S ,(a));S ,(a); (a);a ;S 直接短语:S ;a 句柄: S画出语法树E →E+E|E*E|(E)|i, 关于(i*i+i)的语法树E(根)( E )E + EE * Ei i iE(根)( E )E * Ei E + Ei i1、语言和文法的相互转换1)已知文法写出该文法所生成的语言:①语言是有穷集:通过从开始符号的推导出所有的句子,所有句子的集合即为所求的语言②语言是无穷集:通过从开始符号的推导出几个的句子,总结句子的特点,将特点描述出来。
例如G: S→0S1, S→01S ⇒01 S⇒0S1 ⇒0011 S ⇒0S1 ⇒00S11=>000111语言为01个数相等,并且0在前,1在后L(G)={0n1n|n>=1}2) 已知语言写出描述该语言的文法一般所写的文法是上下文无关文法和正规文法,①用集合的形式表示语言若是这一类的题目先记住几个基本的情况,若是复杂的都可以分解成基本的情况。
一般给定集合是无限集,文法都应是递归文法,可以是直接递归也可以是间接递归。
基本的有:ⅰ{a n }若生成多个a,用递归文法表示则为:A->aA,递归有结束的时候,结束的写法看n的值:若n为0,即有0个a,即为ε,A->ε若n为1,即有1个a,即为a,A->a若n为2,即有2个a,即为aa,A->aaⅱ{a n b n}生成n个a,n个b且a在b之前,则每一次推导都要产生一个a和一个b,才能保证ab的个数相等,若用A作为非终结符,右部A不能在ab之前A->Aab,或在ab之后A->abA,这样生成的符号串就是abab…,所以只能在ab之间。
所以为:A->aAb,然后看n的值:若n 为0,即有0个ab,即为ε,A->ε若n为1,即有1个a,一个b,即为ab,A->abⅲ{rr t}若r是{a,b}*,r t是r的逆,第一位和最后一位相同,第二位和倒数第二位相同,……。
所以先生成第一个和最后一个,然后依次生成第二位和倒数第二位……。
因为第一位和最后一位相同,同为a或同为b,A->aAa|bAb,这样能保证从后部分是前部分的逆。
递归结束看r t和r之间的符号,在这里没有为ε,所以为A->ε;若改为{rar t},r t和r之间为a,即为A->a其余的情况可分解成以上三种情形。
例1:试构造生成语言L={a n b n c i|n≥1, i ≥0}的文法分析:a n b n c i可以进行分解让A生成a n b n,B生成c i符号串a n b n c i是AB连接后的结果。
n≥1所以A-〉aAb|ab ,i ≥0所以B->cB|ε也可写成B->Bc|ε。
解:S-〉AB A-〉aAb|ab B->cB|ε例2:已知语言L={a n bb n| n ≥1}, 写出产生L的文法。
分析:先生成a n b n,当n=1符号串为:abb解:S-〉aSb|abb例3:请给出描述语言={a2m+1 b m+1 | m>=0}∪{a2m b m+2| m>=0}的文法分析:a2m+1 b m+1可以看成aa2m b m b,而a2m b m可以用A->aaAb生成,a2m b m+2可以看成a2m b m bb,而a2m b m也可以用A->aaAb生成,若m=0,a2m b m为空串所以为A->ε,aa2m b m b 是aAb, a2m b m bb是Abb;解:s->aAb|AbbA->aaAb|ε例4:已知语言L={x | x∈{a,b,c}*,且x重复排列是对称的(aabcbaa,aabbaa,等)写出该语言的文法。
分析:若符号串的长度为偶数,则后半部分是前半部分的逆,所以为S->aSa|bSb|cSc|ε若符号串的长度为奇数,则除中间的外,中间字符的后半部分是中间字符前半部分的逆,而中间的字符可以为a,b,c所以文法为:S->aSa|bSb|cSc|a|b|c解: S->aSa|bSb|cSc|a|b|c|ε②用自然语言描述语言这种情况一般常根据经验来构造文法。
例:写一个文法,使其语言是奇数集,且每个奇数不以0开头。
N->A|MAM->B|MDA->1|3|5|7|9B->1|2|3|4|5|6|7|8|9D->0|B1.已知文法G[A]=({A},{a,b},{A—>bA|a},A)所生成的语言是什么?{b n a|n>=0}2.写一文法,使其语言是偶正整数的集合。
要求:(1) 允许0打头;(2)不允许0打头。
答:(1)允许0开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|03.给出生成下述语言的上下文无关文法:(1){ a n b n a m b m| n,m>=0}(2) { 1n0m 1m0n| n,m>=0}(3) {a2n+1|n>=0}(4) {a2n+1b n c i|n>0,i>=0}答:(1)S→AAA→aAb|ε(2) S→1S0|AA→0A1|ε(3) S→aaS|a(4) S→aABA→aaAb|aabB→cB|ε4.已知语言L={x | x∈{a,b,c}*,且x重复排列是对称的(aabcbaa,aabbaa,等)写出该语言的文法。
S→aSa|bSb|cSc|a|b|c|ε1:证明下述文法G[E]是二义的。
E→a|(E)|EOEO→+|-|*|/答:可为句子a+a*a构造两个不同的最右推导:最右推导1 E EOE EOa E* a EOE* a EOa * a E+ a * a a + a * a最右推导2 E EOE EOEOE EOEO a EOE * a EOa * a E+ a * a a + a * a2:令文法G[E]为:E→T|E+T|E-TT→F|T*F|T/FF→(E)|i1:试构造生成语言L={a n b n c i|n≥1, i ≥0}的文法解:S-〉AB A-〉aAb|ab B->cB|ε2:已知语言L={a n bb n| n ≥1}, 写出产生L的文法。
解:S-〉aSb|abb3:已知文法G=({A,B,C},{a,b,c},A,P)其中产生式P由以下组成:A →abc A →aBbcBb→bB Bc →CbccbC →Cb aC →aaBaC →aa问:此文法表式的语言是什么?解:该题通过推导到的句子的特点进行总结,语言为:{a n b n c n|n>=1}4 请给出描述语言={a2m+1 b m+1 | m>=0}∪{a2m b m+2| m>=0}的文法解:s->aAb|AbbA->aaAb|ε5已知文法G[S]为:S→dABA→aA|aB→Bb |G[S]产生的语言是什么?G[S]能否改写为等价的正则文法?解:语言为:{da m b n|m>0,n>=0}可改写为正规文法:S->dA A->aB B->aB|bD|ε D->bD|ε6:试写一文法,使其描述的语言L(G) 是能被5整除的整数集合。
解:S->D|AD|ABDD->0|5A->1|2|3|4|5|6|7|8|9B->0|A|0B|AB7:已知语言L={x | x∈{a,b,c}*,且x重复排列是对称的(aabcbaa,aabbaa,等)写出该语言的文法。
解: S->aSa|bSb|cSc|a|b|c|ε2、已知一上下文无关文法,对给定的句型,画出语法树,并求其所有的短语,直接短语以及句柄。
1)已知一上下文无关文法,构造语法树语法树是对推导过程中的形象描述。
若用产生式:A->α推导,对应的树中,A是双亲结点,α中的符号是孩子结点。
一般根据推导过程可以画出语法树。
注意,推导过程有最左推导、最右推导和既不是最左也不是最右推导。