第三章 词法分析
词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号。
词法分析器(Lexical Analyzer) 又称扫描器(Scanner):执行词法分析的程序。功能是输入源程序、输出单词符号。
单词符号的种类:
- 基本字:如 begin,repeat,
- 标识符:表示各种名字:如变量名、数组名和过程名
- 常数:各种类型的常数
- 运算符:+,-,*,/,
- 界符:逗号、分号、括号和空白
输入源程序输出二元组–输出的单词符号的表示形式: (单词种别,单词自身的值) 如(保留字,‘const’)、(运算符,‘=’)…
词法分析器作为一个独立子程序供语法分析器调用:词法分析是作为一个独立的阶段,但不处理为独立的一遍。
- 作为独立阶段的优点:
- 使整个编译程序结构简洁、清晰和条理化,
- 有利于集中考虑词法分析一些枝节问题。
- 不作为独立的一遍:
- 将其处理为一个子程序。
词法分析与语法分析同时交替进行。词法分析器借助符号表将单词符号分解出来传给语法分析器,语法分析器(同样需要符号表)再接着向词法分析器取下一个单词,一个闭环。
正规表达式与有限(有穷)自动机