当前位置:主页   - 电脑 - 程序设计 - C/C++
词法分析(1)---词法分析的有关概念以及转换图
来源:网络   作者:肥仔   更新时间:2011-08-14
收藏此页】    【字号    】    【打印】    【关闭

  词法分析是编译的第一个阶段,前面简介中也谈到过词法分析器的任务就是:

  字符流------>词法记号流

  这里词法分析和语法分析会交错进行,也就是说,词法分析器不会读取所有的词法记号再使用语法分析器来处理,通常情况下,每取一个词法记号,就送入语法分析器进行分析,图解:

clip_image001

  词法分析器是编译器中与源程序直接接触的部分,因此词法分析器可以做诸如

  1). 去掉注释,自动生成文档(c#中的///注释)

  2). 提供错误位置(可以通过记录行号来提供),当字符流变成词法记号流以后,就没有了行的概念

  3). 完成预处理,比如宏定义

  1. 词法记号,词法单元(lexeme),模式

  模式是一种规则

  每个词法单元都有一个特定记号

  比如 int a=3,这里 int,a,=,3都是词法单元,每个词法单元都属于某个词法记号,比如3就是"num"这个词法记号的一个词法单元,而模式规定了什么样的字符串的词法记号是什么样的(模式是一种规则)

  某一特定模式规定了某个词法记号下的一类词法单元,比如:

  模式:用字母开头的包含字母和数字的串

  上面模式的词法记号:id(所有符合上面模式的字符串的记号都是id)

  词法单元:a123 或者 aabc 等

  词法记号举例(简称为记号):

  1) 每个的关键字都有属于自己的一个记号,比如关键字for,它可以使用记号for;关键字int,可以使用记号int

编缉推荐阅读以下文章

  • 词法分析(6)---DFA的化简
  • 词法分析(5)---从正规式到NFA
  • 词法分析(4)---NFA与DFA的转化
  • 词法分析(3)---DFA
  • 词法分析(2)---NFA
  • 一个小语言的词法分析程序
其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明