首页考试吧论坛Exam8视线考试商城网络课程模拟考试考友录实用文档求职招聘论文下载
2013中考
法律硕士
2013高考
MBA考试
2013考研
MPA考试
在职研
中科院
考研培训 自学考试 成人高考
四 六 级
GRE考试
攻硕英语
零起点日语
职称英语
口译笔译
申硕英语
零起点韩语
商务英语
日语等级
GMAT考试
公共英语
职称日语
新概念英语
专四专八
博思考试
零起点英语
托福考试
托业考试
零起点法语
雅思考试
成人英语三级
零起点德语
等级考试
华为认证
水平考试
Java认证
职称计算机 微软认证 思科认证 Oracle认证 Linux认证
公 务 员
导游考试
物 流 师
出版资格
单 证 员
报 关 员
外 销 员
价格鉴证
网络编辑
驾 驶 员
报检员
法律顾问
管理咨询
企业培训
社会工作者
银行从业
教师资格
营养师
保险从业
普 通 话
证券从业
跟 单 员
秘书资格
电子商务
期货考试
国际商务
心理咨询
营 销 师
司法考试
国际货运代理人
人力资源管理师
广告师职业水平
卫生资格 执业医师 执业药师 执业护士
会计从业资格
基金从业资格
统计从业资格
经济师
精算师
统计师
会计职称
法律顾问
ACCA考试
注册会计师
资产评估师
审计师考试
高级会计师
注册税务师
国际内审师
理财规划师
美国注册会计师
一级建造师
安全工程师
设备监理师
公路监理师
公路造价师
二级建造师
招标师考试
物业管理师
电气工程师
建筑师考试
造价工程师
注册测绘师
质量工程师
岩土工程师
造价员考试
注册计量师
环保工程师
化工工程师
咨询工程师
结构工程师
城市规划师
材料员考试
监理工程师
房地产估价
土地估价师
安全评价师
房地产经纪人
投资项目管理师
环境影响评价师
土地登记代理人
缤纷校园 实用文档 英语学习 作文大全 求职招聘 论文下载 访谈|游戏
软件水平考试
软件水平考试资讯
软件水平考试试题
软件水平考试专项辅导
软件水平考试交流互动
软件水平考试交流互动
您现在的位置: 考试吧 > 软件水平考试 > 复习资料 > 系统分析师 > 正文

2012年软考系统分析师经典教程:重点与难点

第 1 页:2.5.1 文法及语言形式描述
第 2 页:2.5.2 词法分析
第 3 页:2.5.3语法分析
第 4 页:2.5.4 代码优化


  第4页:

  2.5.4 代码优化

  优化是对程序进行等价(指不改变程序的运行结果)变换,经变换后的程序能生成更有效(运行时间更短、占用空间更小)的目标代码。

  根据优化所涉及的程序范围,可分为局部优化、循环优化和全局优化三个不同的级别

  编译原理重点难点归纳:

  了解编译程序工作的大致过程,要清楚编译程序是如何生成的。请大家记忆并理解以下概念:编译程序,解释程序,翻译程序,扫描器,分析器,编译前端与后端,符号表。

  要掌握的几个重量级概念:上下文无关文法,语法分析树和二义性,同时也引出了与此紧密联系的其它概念:推导,句型,句子,最左推导,最右推导等。

  最后给出了另一个常考点:乔姆斯基的方法分类。

  1.上下文无关文法的定义,判断和转化,以及与上下文无关文法密切相关的概念。

  首先,应该掌握上下文无关文法的四个构成要素;

  其次,应该清楚对于上下文无关文法,其每个产生式的左部和右部必须满足的条件。

  在有关上下文无关文法的考点中,有这样几种考查方式:

  ◆ 给出某语言的自然语言描述方式,要求写该语言的上下文无关文法表述形式;

  ◆ 给出某语言的上下文无关文法,要求用自然语言描述该语言;

  ◆ 给出某语言的上下文无法方法,要求证明该文法是否二义;

  ◆ 给出某语言的上下文无关文法,要求给出指定句子的最左或最右推导;

  ◆ 给出某语言的上下文无关文法,要求给出指定句子的语法分析树;

  ◆ 给出一个具有二义性的上下文无关文法,要求将其转换成非二义性的。

  2.乔姆斯基的文法分类:

  首先,应该非常清楚乔姆斯基对于四种文法分类的定义,并能理解其含义。几种文法中,最基本的是0型文法,读者可以将它理解为其它所有文法的基础,它是可以表示任何语言的文法。后面的1,2,3三种文法,是分别对于0型文法产生式的两边作了不同的限制之后,形成了新的文法。比如:规定0型文法的每个产生式中,其左边字符集长度小于右边字符集长度并且同时规定开始符号只可出现于产生式的左边,不能出现在任何产生式的右边,这样,就成为了1型文法(即上下文有关文法)。其它与此类似,在1型文法的基础上,进一步规定该文法的任意产生式,其左部只允许有一个字符且必须为非终结符,这样就构成了上下文无关文法;再在上下文无关文法的基础上进行限制:规定除了左部有且只有一个非终结符外,还特别规定右部最多只允许有两个字符,当为两上字符时必须一个为非终结符,另一个为终结符,而当只有一个字符时,必须为终结符,这样的文法就成了正规文法。这样一层套一层的限制,就形成了从0型到3型文法的定义体制,每一层都是在前一层基础上进行定义的,所以说前一层一定比该层表示的范围要广,因为其受的限制要少。

  那么,我们在判断一个文法时应该以什么规则来判断呢?这个规则当然是:3->2->1->0.也就是说,我们判断是从高到低来判断的,比如:一旦判断其属于正规文法之后就没必要再判断其是否属于上下文无关的了(因为它必定属于上下文无关,我们应该以最高规则来判定其属于的文法类型),其它情况与此类推。只有当我们判断不属于3型文法时,我们才向下判断,其是不是属于2型的,若不属于2型的,则依此类推再向下判断。最终的结果如果不属于3,2和1三种类型,那就只有属于0型了。

  “给定一个文法,要求判断其属于何种文法”是一个重要考点,其出题形式可能是填空,选择等多种题型。

  正规式和有限自动机,对于词法分析一章的考点,可以说80%到90%以上集中在这一节的内容上。针对于这一节的知识点介绍和考点分析:

  1)词法分析器的功能:输入的是源程序,输出的是分析完成的单词符号;

  2)状态转换图:是一张有向图,用于标识在特定的输入下词法分析器应该选择的分析方向。

  对于考点1),作为选择进行考查,而对于考点2),多数是与有限自动机一些考查,要求给出以“状态图”表示的确定有限自动机,或者是要求直接给出针对于某正规式的状态转换图,大家记住一句话:状态转换图,就是一张当输入不同的内容时,选择不同分析路径的有向图。

  下面,我们重点看一下有关“正规式与有限自动机”这一考点的各种可能考查形式:

  a.题目给定一正规式,要求给出其NFA,DFA或最简DFA形式。

  b.题目给定一用状态图表示的NFA,要求给出其对应的DFA或最简DFA形式。

  c.题目给定一NFA,DFA或最简DFA,要求给出其对应的正规式。

  d.题目给定一正规集,要求给出其相应的DFA。

  e.题目给定一用自然语言描述的正规集,要求给出其相应的正规式表示形式。

  这些考点,综合起来看,是在正规式,正规集,NFA和DFA之间作各种可能的转换,当然这种转换正确与否的判断标准就是转换之后的内容是不是与转换之前的内容等价,如果等价,我们就认为转换是正确的。

  在考点e这类的转换题目中,有一些是需要另外规纳出来的,他们在某一方面具有共同的特征,如果掌握了其中一题,将可举一反三解出其它题。

  比如有以下的几种题目就可以作以总结:

  1.求偶(奇)数个a与偶(奇)数个b构成的语言的正规式;

  2.求能被3(4、5、或其它任意给定的n)整除的正规式的DFA;

  3.求不以(或以)n(n从0到9)开头的XXXX(符号某种条件的)奇(偶数)数的正规式。

  以上三种类型的考题,在每一种类型中,都是有规律可循的,也都有简便的方法可以帮助我们快速求解其正规式,进而快速确定DFA及最简DFA。针对于这三种类型的解题思路分析,我会在另外的文章中给出。

  当词法分析器对源程序进行了词法分析,获得了一个个独立的单词符号后,编译程序总控模块就会调用语法分析子程序对这些单词符号集进行语法分析,也就是:利用该文法的产生式来判断这些单词符号是否足以构成一个在语法上正确的程序。如果可以构成一个在语法上正确的程序,则接着作编译下面的工作,比如:语法制导翻译,中间代码生成、代码优化等工作;而如果不能构成一个在语法上正确的程序,则给出相应的错误提示并将错误信息记入对应的数据记录中。

  语法分析的规则主要基于两种:自上而下分析和自下而上分析。自上而下分析的大致思路是:根据产生式规则,从产生式的开始符号进行推导,一直推导到可以产生当前要判断的这个句子为止。如果推导了所有可能情况,但没有推出这样的句子,那么这个句子就是不符合该语言的语法规则的(产生式即定义了语言的语法规则)。

  一种自上而下的分析方法:LL(1)分析法,下面,我介绍一下本章的主要常考知识点及考查角度:

  1.给定一文法,要求将其改造成可以进行自上而下分析的形式。

  这里面涉及到两方面的知识点:

  左递归的去除及公因子的提取。所谓的左递归是指产生式是形如:P->Pab…的形式,即:产生式右边的第一个字符就是该产生式左边的那个非终结符。当一个文法中有左递归的产生式时,是无法进行自上而下推导的,因为只要这个产生式被推导,就势必会使这种推导过程陷入一种递归循环无休止推导的情形。去除左递归的方法是比较简单的,其基本思路是将左递归通过转化变成与之等价的右递归。即将形如:P->Pa|b 形式的左递归变成如下形式:P->bP',P'->aP'|e(注:e表示空)。提取公因子的目的是为了避免推导过程中的回溯,也就是使每一次的向下推导是唯一的,而不是有多个选择,因为有多个选择的话就可能出现回溯。

  2.给定一文法,要求判断其是否为LL(1)文法。判断一个文法是否为LL(1)文法主要有两种方法:一种是判断文法是否二义,如果二义,则文法必定不为LL(1)(注意:此命题的否合命题不真);二是根据关于LL(1)文法成立的三个条件。显然,第一种判断方法效率是比较高的,但是,其只能判断文法“不为”LL(1)的,并不能判定文法“是”LL(1)的,要判断文法“是”LL(1)的,就得用第二种方法,但在考题中,如果要求你判断某文法是否为LL(1)的,则该文法多半不是LL(1)的,而且此点可以很容易地用二义性来证明,这是一种常考形式。

  3.给定一文法,要求构造LL(1)分析表。LL(1)分析的重点和难点内容都在其分析表的构造上,后面要讲的LR分析也是,它的难点也在于其分析表的构造。构造LL(1)分析表是一个常考点,也是大分值题的可能出题点,对于普通学校而言,相比于LR分析,他们更喜欢考LL(1)。LL(1)分析表构造前,需要先弄清FIRST集和FOLLOW集的构造方法,简单地说,FIRST集是用于求非终结符推出的产生式中的第一个终结符的,而FOLLOW集是用于求与该非终结符后紧邻的那个终结符的。FIRST集的构造方法见编译原理的教材,在构造的三个规则中,前两个规则都是比较容易理解的,第三个规则看上去就有点复杂了,我们简单地来看第三条规则,就是:当由X推出的产生式中前面若干个非终结符,其FIRST集均含有空时,就取这若干个非结符的后一个字符的FIRST集,当然,这“后一个字符”可能是终结符,也可能是非终结符,只要其FIRST集不为空就行;而当X推出的右边全是非终结符,且这些非终结符的FIRST集全含有空时,就把空加到FIRST(X)中。FOLLOW集的构造方法很简单,不作详细讲解了。LL(1)分析表的构造方法见教材,构造规则主要有3条。说到这里,大家应该明确分析表中的各个单元到底代表什么含义,我作一下简单的介绍:分析表中的最顶一行,是产生式中所有的终结符;分析表中的最左一列,是产生式中所有的非终结符;而产生式中间的诸多单元格则可以存放该文法的产生式或特殊标志(比如成功和错误标志)。这样的二维表格构成的单元格的含义是:当左边的非终结符遇到最上一行中的某个终结符时应该选择哪个产生式进行向下的推导,这个产生式就是放在对应二维坐标处的产生式。

  4.给定一文法,先要求求解其LL(1)分析表,然后要求给出针对于某一个句子的具体分析过程。这个考点的第二问主要就是考查考生对预测分析程序的工作过程的理解了,预测分析程序完全是按照分析表机械工作的,针对于考生而言,要明确何时出栈,何时入栈,以及如何入栈,这些细节信息都是要通过作题掌握的,只理解而不会熟练解答是没有用的。

  5.给定一文法,要求给出其递归下降分析程序。递归下降分析的条件也是无左递归及不带回溯,其构造的过程比较简单,就是将每个非终结符处理成可以互相递归调用的过程体。详细过程参照P74到P75的例子,你可以试着写一下P76页教材上未列出的F过程的实现。

上一页  1 2 3 4 5  下一页

  相关推荐:

  2012年软考系统分析师考试60天完美复习计划

  2012年软件水平考试网络工程师章节笔记讲义汇总

  2012年上半年软件水平考试成绩查询汇总

文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。