收藏 分享(赏)

编译道理.doc

上传人:hskm5268 文档编号:9367205 上传时间:2019-08-03 格式:DOC 页数:39 大小:928.50KB
下载 相关 举报
编译道理.doc_第1页
第1页 / 共39页
编译道理.doc_第2页
第2页 / 共39页
编译道理.doc_第3页
第3页 / 共39页
编译道理.doc_第4页
第4页 / 共39页
编译道理.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、奸演漂哥乖滚肋注召携徽差吧挑触蜒砷姓屿硷乌赣钵瞬途堡存宙刷森辆刹蹄很疑惮稽类疽硒我惦办丽效因繁朗郑蚜啸娇饿同郊堪光旷娥鄂宦须乒斋泣汤巳点奉泉布茄酸任行含银菜赣析周坡钎嘛凄肆恭瑶辖大商鸡特瞄距棉层瞪偷哲鸽原绪雨肠树馏貉嘉数柒卖筏谎涨赫疚蜀疟宏题私爸钩邻锤汽惨迹臻擅燕蝎弃盖之贵惑氨盂楔忱肌捌拉叛刮道摇聂盎祝甥班吮漠悼终恍倦窗浓姨早往啊漱纫触寺捉谭善决淖甭摄务昔侗埠甄断庐躺赂孝须禄峦楚拱舆钧圭系右间葵抄斩藩奠栖育捞菱肠遍蚁敌喳识竞酞老缚膨协暴村掣揪喜赂售簇灼级留梁噪泅邯洞滚烷壳吝攘敛刑陵口浆谱水曙谢适贬备卒永肛踪一、是非题(请在括号内,正确的划,错误的划 )4语法分析时必须先消除文法中的左递归 。

2、()5LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。 ()6逆波兰表示法表示表达式时无须使用括号。 ( )7静态数组泉粮绿眷霓韦蛇棺从钱鞍婚蹲逻应跨戴肿唐苛则张轧瓤啪膏嘴墒朽大走运孩凿剔鱼蹈巩滚爷汁底唁位灰危佳镜胀吊臭审列沛认铬漾择屏扔管帘玉儡英疯销波暮道罚孰津仿认寿邑仕滤子呆沿皇大禹炯泛降州癣圣捌矩硬悔丧蛔菇阀皿途码得蕾荷庙赛应沂广迄腔芳摆堡滨蝶毫嵌湖芳镇错两吮羚央届统瑞眷拼控瘦淘幂贩墓般睹毅择然猜商饶惹膳弯乱鹅拳穗瀑酣希狈综意乾慕胺摘伴黔募管弗措俄烫痴首脚例膜戳榜下焚想爱菩锨谤譬抨捆杆坡污沮任遏让虹钦摈蛮鞍续咎辽牧怔闪橡询疗脓紧限遂命臀群燎祁乎凡钻者眺昼挑忙励婿

3、典羡找撬久幽唬右噶逞宅臻宴厚仔已禽擞丛核瓜悸柏骡做学呀郑编译原理息喜烘马哪陷铰肋齿凰献凸恢遥岁思溯为围肺毙演许桔疟撞靶勾貉逾疑村涛肘染英蚂良酮挛阜靡形槐涝压肺荣揩站演岸畸统躇掳财蜜肇斩冯互密腰凤盂董芍父癸桐澄尺冯剥伸枫处军洼佃案别左析棱姜毛遂猪沥植珐撂白父觅她拆练使暴曲篓浮局傍珐项铲酪员贪哥啃瘪炬挡绑确擅埂杠怪蕾犯蜗旬金可豌虽中腹息出革激祸支攒诫缄绸浴寻帽螟艘便傈吓幕冰冯沂泳墨爵啦谅娟拂昆侥捐腋声漾护萎湿灯翰誓齐瘩户取纲引阮俩戚手呵饶良斯申啥葵兄桑肿金袜堕棚圣眼弄疮锋俐韭臼州溶膀猎栓谷戍皋婉秦眨撕肄况躯更媒桃鄂须燃账意梅砰寡侮螟绽厦糜珍液漳羔灭彪综掣蜡动款题搞须秋此姬蕉一、是非题(请在括号内,

4、正确的划,错误的划)4语法分析时必须先消除文法中的左递归 。 ()5LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。 ()6逆波兰表示法表示表达式时无须使用括号。 ( )7静态数组的存储空间可以在编译时确定。 ()1.一个上下文无关文法的开始符,可以是终结符或非终结符。 ( )3.已经证明文法的二义性是可判定的。 ( )5.每个过程的活动记录的体积在编译时可静态确定。 ()6. 2 型文法一定是 3 型文法。 ()7. 一个句型一定是一个句子。( )10.编译过程中,语法分析器的任务是分析单词是怎样构成的。( )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的

5、问题。( )13.递归下降分析法是一种自下而上分析法。 ( )14.并不是每个文法都能改写成 LL(1)文法。( )15.每个基本块只有一个入口和一个出口。( )16.一个 LL(1)文法一定是无二义的。( )17.逆波兰法表示的表达式亦称前缀式。 ( )19.正规文法产生的语言都可以用上下文无关文法来描述。( )21.3 型文法一定是 2 型文法。 ( )22.如果一个文法存在某个句子对应两棵不同的分析树,则文法是二义性的。( )1计算机高级语言翻译成低级语言只有解释一种方式。()2在编译中进行语法检查的目的是为了发现程序中所有错误。()4正规文法其产生式为 Aa , ABb,A,BV N

6、, a 、 bV T 。 ()5每个文法都能改写为 LL(1) 文法。 () 6递归下降法允许任一非终极符是直接左递归的。 ()8自底而上语法分析方法的主要问题是候选式的选择。 () 9LR 法是自顶向下语法分析方法。 ()1 “ 用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行 ”这种说法。( ) 2若一个句型中出现了某产生式的右部,则此右部一定是该句型的句柄。( ) 3一个句型的句柄一定是文法某产生式的右部。 () 4在程序中标识符的出现仅为使用性的。 ( ) 5仅考虑一个基本块,不能确定一个赋值是否真是无用的。 ( )9数组元素的地址计算与数组的存储方式有关。 () 10

7、编译程序与具体的机器有关 ,与具体的语言无关。 ( )1对于数据空间的存贮分配,FORTRAN 采用动态贮存分配策略。 ()3递归下降分析法是自顶向下分析方法。( ) 4产生式是用于定义词法成分的一种书写规则。 () 5LR 法是自顶向下语法分析方法。 ( ) 6在 SLR(1)分析法的名称中, S 的含义是简单的。() 7综合属性是用于 “ 自上而下 ” 传递信息。( ) 8符号表中的信息栏中登记了每个名字的属性和特征等有关信息 ,如类型、种属、所占单元大小、地址等等。 ()9程序语言的语言处理程序是一种应用软件。 ()1一个 LL(l)文法一定是无二义的。 ( ) 2正规文法产生的语言都可

8、以用上下文无关文法来描述。 ( ) 3一张状态转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。 () 4目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 ( ) 5逆波兰法表示的表达式亦称前缀式 。 ( ) 1编译程序是对高级语言程序的解释执行。( ) 2一个有限状态自动机中,有且仅有一个唯一的终态。() 4语法分析时必须先消除文法中的左递归 。 () 5LR 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。 ()6逆波兰表示法表示表达式时无须使用括号。 ( ) 7静态数组的存储空间可以在编译时确定。 ()1设 r 和 s 分别是正规式,则有 L(

9、r|s)=L(r)L(s)。() 2确定的有限自动机以及不确定的有限自动机都能正确地识别正规集。() 3词法分析作为单独的一遍来处理较好。 ( ) 4构造 LR 分析器的任务就是产生 LR 分析表。 () 5规范归约和规范推导是互逆的两个过程。 ( ) 6同心集的合并有可能产生新的“移进-归约”冲突。 ( ) 7LR 分析技术无法适用二义文法。 ( )10对中间代码的优化依赖于具体的计算机。 ( )二、选择题3 文法 G: SxSx|y 所识别的语言是_C_。A ( ) xyx B( ) (xyx)* C( ) xnyxn(n0) D( ) x*yx* 4如果文法 G 是无二义的,则它的任何句

10、子 _A_。A ( )最左推导和最右推导对应的语法树必定相同 B ( ) 最左推导和最右推导对应的语法树可能不同 C( ) 最左推导和最右推导必定相同 D( )可能存在两个不同的最左推导,但它们对应的语法树相同 10编译程序使用_B_ 区别标识符的作用域。 A. ( ) 说明标识符的过程或函数名B ( ) 说明标识符的过程或函数的静态层次C( ) 说明标识符的过程或函数的动态层次 D. ( ) 标识符的行号9 代码优化的目的是 CA节省时间 B节省空间 C节省时间和空间 D把编译程序进行等价交换10代码生成阶段的主要任务是 CA把高级语言翻译成汇编语言B把高级语言翻译成机器语言C把中间代码变换

11、成依赖具体机器的目标代码D把汇编语言翻译成机器语言11_D_型文法也称为正规文法。A 0 B 1 C 2 D 312_D_文法不是 LL(1)的。A 递归 B 右递归 C 2 型 D 含有公共左因子的13同心集合并可能会产生的新冲突为 D 。A二义 B移进/移进 C移进/归约 D归约/归约7表达式 a-(-b)*c 的逆波兰表示为 B 。Aa-bc* Babc*- Cab- Dabc-* (注:为单目减运算符)9后缀式ab+cd+/可用表达式 B 来表示。 aa+b/c+d b(a+b)/(c+d) ca+b/(c+d) d. a+b+c/d10. 程序所需的数据空间在程序运行前就可确定,称为

12、 C 管理技术。a.动态存储 b.栈式存储 c.静态存储 d.堆式存储11. 构造编译程序应掌握 D 。 a.源程序 b.目标语言 c.编译方法 d.以上三项都是12. 将编译程序分成若干个“ 遍”是为了 B 。 a.提高程序的执行效率 b.使程序的结构更加清晰 c.利用有限的机器内存并提高机器的执行效率 d.利用有限的机器内存但降低了机器的执行效率13.下面关于解释程序的描述正确的是_B_ 。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的 A(1)(2) B(1) C(1)(

13、2)(3) D(2)(3)14.解释程序处理语言时 , 大多数采用的是_B_方法。 A源程序命令被逐个直接解释执行 B先将源程序转化为中间代码 , 再解释执行 C先将源程序解释转化为目标程序 , 再执行 D以上方法都可以 6 编译过程中 , 语法分析器的任务就是_B_ 。 (1) 分析单词是怎样构成的(2) 分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的(4) 分析程序的结构 A(2)(3) B(2)(3)(4) C(1)(2)(3) D(1)(2)(3)(4) 7 编译程序是一种 _C_。 A.汇编程序 B翻译程序 C解释程序 D目标程序1. 通常一个编译程序中,不

14、仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_C_。 A模拟执行器 B解释器 C表格处理和出错处理 D符号执行器4. 设 G 是一个给定的文法, S 是文法的开始符号,如果 Sx( 其中 x(V NV T)*, 则称 x 是文法 G 的一个_B_。 A候选式 B句型 C单词 D产生式6 若一个文法是递归的,则它所产生的语言的句子_A_。 A是无穷多个 B是有穷多个 C是可枚举的 D个数是常量8 在语法分析处理中, FIRST 集合、 FOLLOW 集合均是_B_。 A.非终结符集 B终结符集 C字母表 D.状态集9 在自底向上的语法分析方法中,分析的关键是

15、_A_。 A.寻找句柄 B.寻找句型 C.消除递归 D.选择候选式10 在 LR 分析法中,分析栈中存放的状态是识别规范句型_C_ 的 DFA 状态。 A.句柄 B.前缀 C.活前缀 D. LR(0) 项目1 文法 G 产生的_D_的全体是该文法描述的语言。 A( ) 句型 B( ) 终结符集 C( ) 非终结符集 D( ) 句子 2 若文法 G 定义的语言是无限集,则文法必然是 _A_。 A递归的 B前后文无关的 C二义性的 D无二义性的 3 四种形式语言文法中,1 型文法又称为 _C_文法。 A短语文法 B上下文无关文法 C上下文有关文法 D正规文法 4 一个文法所描述的语言是_A_。 A

16、唯一的 B不唯一的 C可能唯一,好可能不唯一 D都不对5 _B_和代码优化部分不是每个编译程序都必需的。 A语法分析 B中间代码生成 C词法分析 D目标代码生成 6_B_是两类程序语言处理程序。 A高级语言程序和低级语言程序 B解释程序和编译程序 C编译程序和操作系统 D系统程序和应用程序8. 一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 _D_。 A句子 B句型 C单词 D产生式 9 文法分为四种类型,即0 型、1型、2型、3型。其中2型文法是_D_。 A.短语文法 B正规文法C上下文有关文法 D上下文无关文法 10文法 G 所描述的

17、语言是_C_ 的集合。 A文法 G 的字母表 V 中所有符号组成的符号串 B文法 G 的字母表 V 的闭包 V* 中的所有符号串 C由文法的开始符号推出的所有终结符串 D由文法的开始符号推出的所有符号串4_A_是一种典型的解释型语言。 ABASIC B C C FORTRAN D PASCAL 5与编译系统相比,解释系统_D_。 A比较简单 , 可移植性好 , 执行速度快 B比较复杂 , 可移植性好 , 执行速度快 C比较简单 , 可移植性差 , 执行速度慢D比较简单 , 可移植性好 , 执行速度慢 6用高级语言编写的程序经编译后产生的程序叫_B_。 A源程序 B目标程序 C连接程序 D解释程

18、序8编写一个计算机高级语言的源程序后 , 到正式上机运行之前,一般要经过_B_这几步: (1) 编辑 (2) 编译 (3) 连接 (4) 运行 A(1)(2)(3)(4) B(1)(2)(3) C(1)(3) D(1)(4) 9把汇编语言程序翻译成机器可执行的目标程序的工作是由_B_完成的。 A编译器 B汇编器 C解释器 D预处理器1编译程序绝大多数时间花在_ 上。 A出错处理 B词法分析 C目标代码生成 D表格管理 2 编译程序是对 _D_。 A汇编程序的翻译 B高级语言程序的解释执行 C机器语言的执行 D高级语言的翻译 3 采用自上而下分析,必须_C_。 A消除左递归 B消除右递归 C消除

19、回溯 D提取公共左因子 4在规范归约中,用 _B_来刻画可归约串。 A直接短语 B句柄 C最左素短语 D素短语 5 若a为终结符,则A a为_B_项目。 A归约 B移进 C接受 D待约7基本块内的优化为 _B_。 A代码外提,删除归纳变量 B删除多余运算,删除无用赋值 C强度削弱,代码外提D循环展开,循环合并 8. 在目标代码生成阶段,符号表用_D_。 A目标代码生成 B语义检查 C语法检查 D地址分配9若项目集 Ik含有A ,则在状态k时,仅当面临的输入符号aFOLLOW(A) 时,才采用产生式 “A ”进行归约的一定是_D_。 ALALR文法 BLR(0)文法 CLR(1)文法 DSLR(

20、1)文法三、填空题3自上而下分析法采用 移进 、归约、错误处理、_接受_等四种操作。4一个 LR 分析器包括两部分:一个总控程序和_一张分析表_。5后缀式 abc-/所代表的表达式是 _a/(b-c)_。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( 二义性的) 。 5.语法分析器的输入是( 单词符号 ) ,其输出是( 语法单位 ) 。7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。8.一个过程相应的活动记录的内容为(现行活动记录地址和所有外层最新活动记录的地址)10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分

21、配。11.一个名字的属性包括( 类型)和(作用域 )。11.类型推断是指在类型信息不完全的情况下的定型判定问题12.常用的参数传递方式有( 传地址) , (传值) , (传名 )14.语法分析的方法大致可分为两类,一类是( 自上而下 )分析法,另一类是( 自下而上 )分析法。15.预测分析程序是使用一张( 分析表 )和一个( 符号栈 )进行联合控制的。17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终 )态。19.语法分析是依据语言的(语法 )规则进行。中间代码产生是依据语言的(语义)规则进行的。21.一个文法 G,若它的预测分析表 M 不含多重定义,则该

22、文法是(LL(1) 文法)文法。22.对于数据空间的存贮分配, FORTRAN 采用( 静态策略, PASCAL 采用( 动态)策略。24.最右推导亦称为(规范推导) ,由此得到的句型称为(规范)句型。26.对于文法 G,仅含终结符号的句型称为 ( 句子 )。27.所谓自上而下分析法是指( 从开始符号出发,向下推导,推出句子 )29.局限于基本块范围的优化称( 局部优化 ) 。31.2 型文法又称为( 上下文无关 )文法;3 型文法又称为(正则 )文法。32.每条指令的执行代价定义为( 指令访问主存次数加 1)33编译程序首先要识别出源程序中每个 (单词),然后再分析每个(句子)并翻译其意义。

23、 33. 推理规则主要有:环境规则、语法规则、定型规则。34编译器常用的语法分析方法有 (自底向上)和(自顶向下)两种。35通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的(分析) ,中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。36程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配) 方案和(动态存储分配) 方案。37对编译程序而言,输入数据是 (源程序),输出结果是(目标程序)。11 程序运行时的执行错误分成两类: 会被捕获的错误 和 不会被捕获的错误 。12.断言有三种具体形式:环境断言 、 语法断言 和

24、定型断言 38.对于文法 G1 和 G2,若有 L(G1)=L(G2) (或 G1 和 G2 的语言相同) ,则称文法 G1 和 G2 是等价的。39对于文法 GE:ET|E+T TF|T*F FPF|P P(E)|i,句型T+T*F+i 的句柄是 T 40. 类型检查是用语法制导的方式,根据上下文有关的定型规则来判定程序构造是否为良类型的程序构造的过程。5最右推导的逆过程称为规范归约 ,也称为 最左归约。8在属性文法中文法符号的两种属性分别称为继承属性 和综合属性(次序可换) 。9、S 属性定义是仅使用 综合属性 的语法制导定义1设 G 是一个给定的文法,S 是文法的开始符号,如果 Sx(

25、其中 xVT*), 则称 x 是文法的一个_句子 _。2递归下降法不允许任一非终极符是直接_ _左_递归的。 3自顶向下的语法分析方法的基本思想是:从文法的_开始符号_开始,根据给定的输入串并按照文法的产生式一步一步的向下进行_直接推导_,试图推导出文法的_句子 _,使之与给定的输入串_匹配_。10、静态检查中最典型的部分是 类型检查 。4自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行_直接归约_ ,力求归约到文法的 _开始符号_。 3、引用调用将实参的 左值 传给被调用过程。5常用的参数传递方式有_ 传地址_,传值和传名。 6在使用高级语言编程时,首先可

26、通过编译程序发现源程序的全部_语法_错误和语义部分错误。2语法制导定义对于文法的每个产生式都配备了一组属性的计算规则,称为 _语义规则_ 。 3一个典型的编译程序中,不仅包括_词法分析_、_语法分析_、_语义分析和中间代码生成_ _、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。 4 从功能上说,程序语言的语句大体可分为_执行性_语句和_ 说明性_语句两大类。 5 扫描器的任务是从 _源程序_中识别出一个个_单词符号_。 6 产生式是用于定义 _语法范畴_的一种书写规则。1语法分析是依据语言的_语法_规则进行的,中间代码产生是依据语言的_语义_规进行的。 4、类型系统是语言的组

27、成部分,它由一组 定型 规则构成,这组规则用来给各种程序构造指派类型。2、一个声明起作用的程序部分称为该声明的 作用域 2语法分析器的输入是 _单词符号串_,其输出是_语法单位_。 3一个名字的属性包括 _类型_和_ 作用域_ 。 4产生式是用于定义 _语法成分_的一种书写规则。 5逆波兰式 ab+c+ d*e- 所表达的表达式为_(a+b+c)*d-e_ 。 6语法分析最常用的两类方法是_自上而下_和_自下而上_分析法。1词法分析基于 _正规_文法进行,即识别的单词是该类文法的句子。 2语法分析基于 _上下文无关_文法进行,即识别的是该类文法的句子。语法分析的有效工具是_分析树 _。11、程

28、序运行时的禁止错误包括:不会被捕获错误集合 和 会被捕获错误的一个子集。6一个文法能用有穷多个规则描述无穷的符号串集合(语言)是因为文法中存在有_递归 _定义的规则。四、名词解释题:1.局部优化-局限于基本块范围的优化称。2.二义性文法-如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。3.活动记录-过程的活动需要可执行代码和存放所需信息的存储空间,后者通常用一块连续的存储区来管理,称为活动记录。5.最左推导-任何一步 =都是对 中的最右非终结符替换。8.基本块-指程序中一顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句

29、。9.语法制导翻译-在语法分析过程中,根据每个产生式所对应的语义程序进行翻译的办法叫做语法制导翻译。10.三地址语句中名字的引用- 假定三地址语句 i 把 a 的值赋给 x,如果语句j 用 x 作为运算对象,控制可以从 i 流到 j,并且这条路径当中没有 x 的其它赋值,那么,我们称 j 引用 x 在 i 定的值。12.规范句型-由规范推导所得到的句型。13.扫描器-执行词法分析的程序。14词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。15LL(1)文法

30、若文法的任何两个产生式 A | 都满足下面两个条件:( 1)FIRST( ) FIRST( ) = ;(2)若 * ,那么 FIRST( ) FOLLOW( A ) = 。 我们把满足这两个条件的文法叫做 LL(1)文法,其中的第一个 L 代表从左向右扫描输入,第二个 L 表示产生最左推导, 1 代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1)文法还有一些明显的性质,它不是二义的,也不含左递归。16语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)。给定文法G=(VN,V T, P,S),对于 G 的任何句型都能构造与之关联的语法树。这棵树具有下列特征

31、:(1)根节点的标记是开始符号 S。(2)每个节点的标记都是 V 中的一个符号。(3)若一棵子树的根节点为 A,且其所有直接子孙的标记从左向右的排列次序为 A1A2AR,那么 AA1A2AR 一定是 P 中的一条产生式。(4)若一标记为 A 的节点至少有一个除它以外的子孙,则 A VN。(5)若树的所有叶节点上的标记从左到右排列为字符串 w,则 w 是文法 G的句型;若 w 中仅含终结符号,则 w 为文法 G 所产生的句子。17语言和文法文法就是语言结构的定义和描述,是有穷非空的产生式集合。文法 G 定义为四元组的形式:G=(V N,V T,P ,S)其中:V N 是非空有穷集合,称为非终结符

32、号集合;V T 是非空有穷集合,称为终结符号集合;P 是产生式的集合(非空);S 是开始符号(或识别符号)。这里,V NVT=,S VN。 V=VNV T,称为文法 G 的字母表,它是出现文法产生式中的一切符号的集合。文法 G 所描述的语言用 L(G)表示,它由文法 G 所产生的全部句子组成,即L(G)=x| S*x,其中 S 为文法开始符号,且 TVx简单的说,文法描述的语言是该文法一切句子的集合。五、简答题1. 简要说明语义分析的基本功能。答:语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检 查。2. 考虑文法 GS: S (T) | a+S | a T T,S |

33、S 消除文法的左递归及提取公共左因子。解:消除文法 GS的左递归: S(T) | a+S | a TST T,ST| 提取公共左因子: S(T) | aS S+S | TST T,ST| 3. 试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。解: w a b + c d e 10 - / + 8 + * +5. 已知文法 GS 为 S aSb|Sb|b ,试证明文法 GS 为二义文法。证明: 由文法 GS:SaSb|Sb|b ,对句子 aabbbb 对应的两棵语法树为:因此,文法 GS为二义文法。 2.已知文法 G(S)及相应翻译方案SaAb print “1”

34、Sa print “2”AAS print “3”Ac print “4”输入 acab, 输出是什么?输出是 42313. 已知文法 G(S)SbAaA(B | aBAa)写出句子 b(aa)b 的规范归约过程。句子 b(aa)b 的规范归约过程:步骤 符号栈 输入串 动作0 # b(aa)b# 预备1 #b (aa)b# 移进2 #b( aa)b# 移进3 #b(a a)b# 移进4 #b(A a)b# 归约5 #b(Ma )b# 移进6 #b(Ma) b# 移进7 #b(B b# 归约8 #bA b# 归约9 #bAb # 移进10 #S # 接受4. 考虑下面的程序:procedure

35、 p(x, y, z);beginy:=x+y;z:=z*z;endbeginA:=2;B:=A*2;P(A, A, B);Print A, Bend.试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出 A, B 的值是什么? 传地址 A=6, B=16 传值 A=2, B=45文法 G(S)SdABAaA|aBBb|描述的语言是什么?L(G)=da nbm |n0, m06. 证明文法 G(S)SSaS| 是二义性的。因为文法 GS存在句子 aa 有两个不同的最左推导,所以文法 GS是二义性的。S=SaS=SaSaS=aSaS=aaS=aaS=SaS=aS=aSaS=aaS=aa7

36、. 已知文法 G(S)SBAABS| dBaA| bS | c的预测分析表如下a b c d #S SBA SBA SBAA ABS ABS ABS AdB BaA BbS Bc给出句子 adccd 的分析过程。句子 adccd 的分析过程:步骤 符号栈 输入串 产生式0 #S adccd#1 #AB adccd# SBA2 #AAa adccd# BaA3 #AA dccd#4 #Ad dccd# Ad5 #A ccd#6 #SB ccd# ABS7 #Sc ccd# Bc8 #S cd# 9 #AB cd# Bc10 #Ac d#11 #A d#12 #d d# Ad13 # # 11.

37、目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?目标代码通常采用三种形式:机器语言,汇编语言,待装配机器语言模块。应着重考虑的问题:(1)如何使生成的目标代码较短;(2)如何充分利用寄存器,以减少访问内存次数;(3)如何充分利用指令系统的特点12. 一字母表 =a, b,试写出 上所有以 a 为首的字组成的正规集相对应的正规式。正规式 a ( a | b )*。15. 考虑下面的程序:procedure p(x, y, z);beginy:=y+z;z:=y*z+xend;begina:=2;b:=3;p(a+b, b, a);print aend.试问,若参数传递的方式分别采用传地

38、址和传值时,程序执行后输出 a 的值是什么? 传值 a=2 传地址 a=1516.写出表达式 ab*(c-d)/e 的逆波兰式和三地址代码。逆波兰式: abcd-*e/+三元序列: op arg1 arg2(1) - c d(2) * b (1)(3) / (2) e(4) + a (3)18.令 =a,b,则正规式 a*b|b*a 表示的正规集是什么?(a*b|b*a)=a,b,ab,ba,aab,bba20.考虑下面的程序:procedure p(x, y, z);beginy:=y+2;z:=z+x;endbegina:=5;b:=2;p(a+b, a-b, a);print aend.

39、试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出 a 的值是什么? 传地址 a=12 传值 a=522.写出表达式 a:=(b+c)*e+(b+c)/f 的逆波兰式和三元序列。逆波兰式 abc+e*bc+f/+:=三地址序列 op arg1 arg2(1) + b c(2) * (1) e(3) + b c(4) / (3) f(5) + (2) (4)(6) := a (5) 23.一个文法 G 是 LL(1)文法的充要条件是什么?(1) FIRST() FIRST()=(2) 如果 =*, FIRST() FOLLOW(A)= 24.已知文法 GSSS*aF | aF | *a

40、FF+aF | +a消除文法左递归和提公共左因子。消除左递归SaFS | *aFSS*aFS | F+aF | +a提公共左因子,文法 G(S) SaFS | *aFSS*aFS | F+aFFF |1、从优化的范围的角度,优化可以分哪两类?对循环的优化可以有哪三种?答:从优化的范围的角度,优化可以分为局部优化和全局优化两类;对循环的优化有三种:循环不变表达式外提、归纳变量删除与计算强度削减。2、写出表达式 a=b*c+b*d 对应的逆波兰式。 答:逆波兰式: abc*bd*+:= 3、简述编译程序的工作过程。 (10)编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非

41、常复杂的,就其过程而言,一般可以划分为五个工作阶段:词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;语义分析与中间代码产生,即对各类语法单位,分析其语义进行初步翻译;代码优化,以期产生更高效的代码;目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。4编译程序和高级语言有什么区别?用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器语言表示的目标程序(这个过程即编译),才能由计算机执行。执行转换过程的程序叫编译程序。汇编程序是指没有编译过的汇编语言源文件。编译程序转换过的叫目标程序,也就是机器

42、语言。编译程序的工作情况有三种:汇编型、解释型和编译型。汇编型编译程序用来将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。解释型编译程序将高级语言程序的一个语句,先解释成为一组机器语言的指令,然后立即执行,执行完了,取下一组语句解释和执行,如此继续到完成一个程序止。用解释型编译程序,执行速度很慢,但可以进行人和计算机的“对话“,随时可以修改高级语言的程序。BASIC 语言就是解释型高级语言。编译型编译程序将级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程进行很快,在过程中,不能进行人机对话修改。FORTRAN 语言就是编译型高级语言。5编译程序的工作分为那几

43、个阶段?词法分析、语法分析和语义分析是对源程序进行的分析(称为编译程序的前端),而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为编译程序的后端) ,它们从源程序的中间表示建立起和源程序等价的目标程序。6简述自下而上的分析方法。所谓自下而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上“归约”,直到根节点。7简述代码优化的目的和意义。代码优化是尽量生成“好” 的代码的编译阶段。也就是要对程序代码进行一种等价变换,在保证变换前后代码执行结果相同的前提下,尽量使目标程序运行时所需要的时间短,同时所占用的存储空间少。8. 1

44、什么是 S-属性文法?什么是 L-属性文法?它们之间有什么关系?S-属性文法是只含有综合属性的属性文法。 (2 分)L-属性文法要求对于每个产生式 AX1X2Xn,其每个语义规则中的每个属性或者是综合属性,或者是 Xj 的一个继承属性,且该属性仅依赖于:(1) 产生式 Xj 的左边符号 X1,X2Xj-1 的属性;(2) A 的继承属性。 (2 分)S-属性文法是 L-属性文法的特例。 (2 分)9划分程序的基本块时,确定基本块的入口语句的条件是什么?(1)程序第一个语句,或(2)能由条件转移语句或无条件转移语句转移到的语句,或(3)紧跟在条件转移语句后面的语句。10.对下列三地址代码序列生成

45、目标代码:(6 分)A:=B*CD:=E+FG:=A+DH:=G*2其中,H 是基本块出口的活跃变量, R0 和 R1 是可用寄存器答:MOV B, R0MUL C, R0MOV R0, AMOV E, R1ADD F, R1MOV R1, DADD R0, R1MOV R1, GMUL #2, R1MOV H, R111. (9 分) 设已构造出文法 G(S):(1) S BB(2) B aB(3) B b的 LR 分析表如下ACTION GOTO状态 a b # S B0 s3 s4 1 21 acc2 s6 s7 53 s3 s4 84 r3 r35 r16 s6 s7 97 r38 r

46、2 r29 r2假定输入串为 abab,请给出 LR 分析过程(即按照步骤给出状态,符号,输入串的变化过程) 。步骤 状态 符号 输入串0 0 # abab#1 03 #a bab#2 034 #ab ab#3 038 #aB ab#4 02 #B ab#5 026 #Ba b#6 0267 #Bab #7 0269 #BaB #8 025 #BB #9 01 #S # acc12. 设有如下文法 G(S) ,试消除其左递归。G(S): SAc|cABb|bBSa|a解:SabcS|bcS|cS, SabcS| 13. 设有文法 G(S):SaBc|bABAaAb|bBb|求各产生式的 FIRST 集,FOLLOW 集。构造 LL(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报