词法分析工作总结范文_第1页
词法分析工作总结范文_第2页
词法分析工作总结范文_第3页
词法分析工作总结范文_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品合同推荐词法分析工作总结范文工作总结频道为大家整理的词法分析工作总结范文,供大家阅读参考。更多阅读请查看本站工作总结频道。词法分析是编译器工作的第一阶段,它的工作就是从输入(源代码)中取得token,以作为parser (语法分析)的输入,一般在 词法分析阶段都会把一些无用的空白字符( white space,即空 格、tab和换行)以及注释剔除,以降低下一步分析的复杂度, 词法分析器一般会提供一个 gettoken()这样的方法,parser可 以在做语法分析时调用词法分析器的这个方法来得到下一个 token,所以词法分析器并不是一次性遍历所有源代码,而是采 取这种on-demand的方

2、式:只在parser需要时才工作,并且每 次只取一个token。token 和 lexeme首先,token 不等于 lexeme。token和口 lexeme 的关系就类似于 面向对象语言中“类”和“实例”(或“对象”)之间的关系, 这个用中文不知该如何解释才好,比如语言中的变量a和b,它们都属于同一种 toke n : ide ntifier,而 a 的 lexeme 是” a”,b则是” b”,而每个关键字都是一种token。token可以附带有一个值属性,例如变量 a,当调用词法分析器的gettoke n()时, 会返回一个identifier类型的token,这个token带有一个属

3、性“a”,属性可以是多样的,例如表示数字的token可以带有精品合同推荐一个表示数字值的属性,它是整型的。如下代码:int age = 23;int count = 50;可以依次提取出8个token : int(值为” int ”),id(值 为” age”), assign(值为” =”),number(值为整型数值 23), int(值为” int ”), id(值为” count ”), assign(值为”=”), number(值为 50)正则表达式正则表达式可以用来描述字符串模式,例如我们可以用digit+来表示number的token,其中digit 表示单个数字(这里说正 则

4、表达式并不完全和实现的正则引擎所识别的正则表达式等价, 这里只是为了描述问题而已)。然而像c语言的的多行注释,用正则表达式来描述就比较麻烦, 此时更倾向于直接用有穷自动机(finite automat on)来描述,因为用它来描述非常直观且很容易。有穷自动机(finite automata)有穷自动机也称为有限状态机,状态在输入字符的作用下发生迁移,因此,它可以用来识别token,也因此,我们只要画得出fa, 之后再用代码实现这个fa,那词法分析器也就差不多弄好了。 有穷自动机分确定性(dfa )和非确定性(nfa )两种,如果对于 同一个输入,只会有一个确定的状态迁移路线,也就是只有一个精品

5、合同推荐确定的“下一状态”,那就是dfa,否则就是nfa。因为dfa对于同一个输入只有一个确定的下一状态, 所以词法分 析器当然优先采用它,那 nfa拿来干嘛用呢? nfa用来做描述用 时更方便,我们可以非常迅速地画出一个识别 token的nfa图, 但要想直接画出个dfa那要动不少脑筋。根据正则表达式构建nfa如上所述,nfa更容易画出,那我们就先研究nfa,在定义token 时,我们可以用正则表达式来描述它,因为正则表达式干这行很合适,例如一个 digit+就可以描述数字,多方便。因此,我们 需要根据正则表达式画出与之等价的nfa。而这个算法非常简单,就是tompson s constru

6、ction,这个书上写得很清楚了。将nfa转化成dfa ( nfa的确定化)对于计算机来说,面对同一个输入,如果有多个下一状态,那计 算机就不清楚要转到哪个状态,所以我们期望能从正则表达式得到dfa,而不是nfa,因为这样将来编程实现时比较自然(同一 输入有确定的一个下一状态),而幸运的是,每个 nfa都可以转 化成dfa。为什么nfa可以转化成dfa ?因为fa(finiteautomata)中的状态都是我们自己画的,只要fa能正确的识别token,那就ok 了,也就是,如果nfa和dfa都可以达到一样的效果:识 别token,那其它的我们就不管了。而nfa确定化的本质,就是将原来多个状态改用一个状态来表示,新状态其实是一个状态集,比如nfa中状态si在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论