第3章词法分析词法分析程序又称扫描器,是编译过程的第一步,是下一步进行语法分析的基础
词法分析的任务:1
从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位“单词”,并将其转化为内部编码形式
删除无用的空白字符和回车字符以及其他非实质性字符
进行词法检查,报告所发现的错误
1设计扫描器时应考虑的几个问题3
1词法分析阶段的必要性对于一个程序设计语言来说,关键字、标志符、常数、运算符及分隔符都是单词
它们的单词结构(即词法)也是用相应文法中的若干个产生式来描述的
词法分析与语法分析之间的关系通常有两种形式:1
词法分析作为独立的一遍(完全独立模式)词法分析可作为单独一遍来实现
这种词法分析的输出存入一个中间文件供语法分析使用
这样通过词法分析,就可以将字符串源程序转换成符号串源程序
字符串源程序词法分析符号串源程序图3
1词法分析单独作为一遍2
词法分析程序作为语法分析程序的子程序(相对独立模式)将词法分析和语法分析安排在同一遍中,此时词法分析作为语法分析程序的一个子程序
每当语法分析需要一个新的符号时,就调用词法分析子程序,词法分析子程序从字符串源程序中识别出一个具有独立意义的单词,将其返给语法分析
字符串源程序词法分析器语法分析器图3
2词法分析作为语法分析子程序取符号送符号•完全独立模式的好处:改进编译程序的效率、增强编译程序的可移植性、结构清晰、简化设计
•相对独立模式的好处:词法分析器和语法分析器被设计在同一趟,省去了存放单词的终结文件词法分析过程•逐个读入源程序字符,然后按照构词规则切分成一列单词,再转换成单词序列
单词是语言中具有独立意义的最小单位
•词标(token)是单词的机内表示,其格式由实现系统规定
•实现词法分析程序时,首先需要描述单词,其次需要执行某些相关操作识别单词
•描述程序设计语言的词法的机制