最近在学习《编译原理》,学完词法分析之后,做了一个C语言的词法分析器。
词法分析简述:
词法分析是编译过程的第一步,主要实现高级语言程序中词法规范的检查。词法分析程序的主要任务是按语言的词法规则从源程序中逐个识别单词,把字符串形式的源程序转行成单词串的形式,并把每个单词转换成他们的内部表示,即所谓的“TOKEN”,并对词法进行检查。
词法分析模型:
图一:词法分析模型图
对于一个完整的词法分析模块,主要包含三个部分:输入,处理,输出。
输入:高级语言源程序。
输出:TOKEN List,TOKEN为单词的一种内部表示,一般由两部分组成:单词类别和语义信息。但此类别用来区分不同的单词种类,通常可以使用整数进行编码,语义信息也取决于今后处理的方便(一般为单词内容)。
图二:TOLEN结构
词法分析器:对于某一具体语言(本文采用C语言为例)的所有类词汇,使用正则表达式描述其组成,然后将每条正则表达式转换成有限自动机进而确定化和化简,再把所有的状态机合并成一个总的状态机,然后根据该状态机构造词法分析程序。 图二:TOKEN结构图
为了实现方便,采用词法分析器自动生成器FLEX。
FLEX工作原理介绍:
FLEX的功能是根据FLEX源文件构造一个词法分析器,由FLEX生成的词法分析器由两部分组成,一个状态转换矩阵和一个控制执行程序。
它的工作过程是:
1&