- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
1.合并LR(1)同心集后有可能产生归约归约冲突对
2.一个基本块不能确定一个赋值是否真的有用对
3每一个文法都能改写成LL(1)文法错
4.编译程序与具体的机器有关,也与具体的语言有关对
5.一个语言的文法是唯一的错
6.过程与过程调用中,信息交换的方法是全局变量的使用和参数传递对
7.在编译程序中,安排中间代码生成的目的是便于代码优化和便于目标程序的移植对
8.编译中的语义处理是指两个功能即审查每一个语法结构的静态语义和执行真正的翻译对
9.程序基本块是指一组顺序执行的程序段,仅有一个入口和一个出口错
10.存在这样的一些语言他们能够被确定的有限自动机识别,但是不能用正规式表示。错
二、填空题:
要在某一台机器上为某一种语言构造一个编译程序,必须掌握机器指令、语言文法、(操作系统)三方面内容。
设G是一个给定的文法,S是文法开始符号,如果S—X,那么X是文法G的句子。(X是终结符串)
在一个典型的编译过程中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等5个部分,还包括出错处理程序和表格处理程序,其中,词法分析器用于识别单词符号,语法分析器用来发现源程序中的语法结构。
编译方式与解释方式的根本区别是是否需要整体考虑,递归下降子程序分析法是自上向下的分析法。
语法分析的任务是识别给定的终结符串是否为给定文法的句子。
语法分析最常用的两类方法是自上而下和自下而上分析方法,
在有限自动机中,两个状态等价一致性条件蔓延性条件。
LR分析法中,每个项目的含义与原点的位置有关,概括的说,原点的左部表示已识别的句柄部分,原点的右部表示期待的后缀部分。
在构造LR项目集规范族时,新项目集是组成的,合并LR(1)项目集规范族的同心集所产生的冲突一定是归约冲突。
语法制导翻译比较接近于形式化,它用属性文法工具来表达程序设计语言的语义,每个产生式对应的都给它配上语义动作来进行翻译用。
已知文法G[S]:
S→MH|a
H→LSo|ε
K→dML|ε
L→eHf
M→K|bLM
判断G是否是LL(1)文法,如果是,构造LL(1)分析表。
答案:
文法展开为:
0)S→MH
1)S→a
2)H→LSo
3)H→ε
4)K→dML
5)K→ε
6)L→eHf
7)M→K
8)M→bLM
非终结符FIRST集FOLLOW集
S{a,d,b,ε,e}{#,o}........
M{d,ε,b}....{e,#,o}......
H{ε,e}.....{#,f,o}......
L{e}......{a,d,b,e,o,#}
K{d,ε}......{e,#,o}......
对相同左部的产生式可知:
SELECT(S→MH)∩SELECT(S→a)={d,b,e,#,o}∩{a}=空
SELECT(H→LSo)∩SELECT(H→ε)={e}∩{#,f,o}=空
SELECT(K→dML)∩SELECT(K→ε)={d}∩{e,#,o}=空
SELECT(M→K)∩SELECT(M→bLM)={d,e,#,o}∩{b}=空
所以文法是LL(1)的。
预测分析表:
aodefb#
S→a→MH→MH→MH→MH→MH
M→K→K→K→bLM→K
H→ε→LSo→ε→ε
L→eHf
K→ε→dML→ε→ε
由预测分析表中无多重
文档评论(0)