码迷,mamicode.com
首页 > 其他好文 > 详细

编译原理学习--词法分析(1)

时间:2015-01-22 12:40:41      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

词法分析的任务:

  首先,从阶段上来看,编译器可分为若干个中间阶段:

    技术分享

  典型的,可以包含为一个前端,一个后端。前端接收源程序产生一个中间表示,后端接收表示继续生成一个目标程序。所以,前端处理的是跟源语言有关的属性,后端处理跟目标机器有关的属性。

  更细节的,前端可以划分为若干个阶段:

    技术分享

  下面我们看看词法分析器的任务:

    技术分享

  词法分析器读入程序员写的程序,然后对字符流做切分成记号流。举个例子:

    技术分享这是一个程序员看到的字符流

  词法分析器将字符流读入,根据关键字、标识符、标点、字符串、整形数等进行划分,形成记号流(单词):

    技术分享

  那么就会有两个问题:1.记号的数据结构如何定义? 2.如何实现从字符流到记号流转换的算法?

  首先看如何定义记号的数据结构,假如用C语言实现数据结构的定义,可以这样实现:

    技术分享

  举个例子:假如源语句if(x>5),则词法分析器返回token{k=IF,lexeme=0};token{k=IPAREN,lexeme=0};token{k=ID,lexeme="X"};……

 

  【小结】:词法分析器的任务:字符流到记号流。

       字符流:和被编译语言密切相关(ASCII,Unicode,or……)

       记号流:编译器内部定义的数据结构,编码所识别出的词法单元

 

  

编译原理学习--词法分析(1)

标签:

原文地址:http://www.cnblogs.com/anthony007/p/4241189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!