下载此文档

词法分析小结.doc


文档分类:外语学习 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
词法分析小结.doc:..词法分析小结词法分析是编译器工作的第一阶段,它的工作就是从输入(源代码)中取得token,以作为parser(语法分析)的输入,一般在词法分析阶段都会把一些无用的空白字符(whitespace,即空格、tab和换彳亍)以及注释剔除,以降低下一步分析的复杂度,词法分析器一般会提供一个gettokenO这样的方法,parser可以在做语法分析时调用词法分析器的这个方法来得到下一个token,所以词法分析器并不是一次性遍历所有源代码,而是采取这种on-demand的方式:只在parser需要时才丁作,并且每次只取一个token。token和lexeme首先,token不等于lexemeotoken和lexeme的关系就类似于面向对象语言中类和实例(或对象)之间的关系,这个用中文不知该如何解释才好,比如语言中的变量a和b,它们都属于同一种token:identifier,而a的lexeme是a,b则是b,而每个关键字都是一种tokenotoken可以附带有一个值属性,例如变量a,当调用词法分析器的gettokenO时,会返回一个identifier类型的token,这个token带冇一个属性a,属性可以是多样的,例如表示数字的token可以带有一个表示数字值的属性,它是整型的。如下代码:intage=23;intcount二50;可以依次提取岀8个token:int(值为int),id(值为age),assign(值为二),number(值为整型数值23),int(值为int),id(值为count),assign(值为二),number(值为50)正则表达式正则表达式可以用來描述字符串模式,例如我们可以用digit+來表示number的token,其中digit表示单个数字(这里说正则表达式并不完全和实现的正则引擎所识别的正则表达式等价,这里只是为了描述问题而已)。然而像c语言的的多行注释,用正则表达式来描述就比较麻烦,此时更倾向于直接用有穷自动机(finiteautomaton)來描述,因为用它來描述非常直观且很容易。有穷自动机(finiteautomata)有穷自动机也称为有限状态机,状态在输入字符的作用下发生迁移,因此,它可以用来识别token,也因此,我们只要画得出fa,Z后再用代码实现这个fa,那词法分析器也就差不多弄好了。有穷自动机分确定性(dfa)和非确定性(nfa)两种,如果对于同一个输入,只会冇一个确定的状态迁移路线,也就是只冇一个确定的下一状态,那就是dfa,否则就是nfao因为dfa对于同一个输入只有一个确定的下一状态,所以词法分析器当然优先采用它

词法分析小结 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ttteee8
  • 文件大小30 KB
  • 时间2019-11-14