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

软考软件设计师专题讲义:程序语言部分

来源:考试吧Exam8.com) 2010-6-14 16:41:58 考试吧:中国教育培训第一门户 模拟考场
考试吧整理了软考软件设计师专题讲义,帮助考生备考软考软件设计师考试。

  在考点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 6 7 8 9 10 11  下一页
  相关推荐:推荐:2010年计算机软件水平考试必备完美攻略
       软考软件设计师专题讲义:计算机系统知识
       软考软件设计师通关必读:数据流图专题讲解
       计算机软考:软件设计师练习试题及答案解析汇总
文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。