词法分析的主要目的是将输入的字符串输出为一个个单独的单词符号。即从左至右逐个字符的对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为由单词符号串组成的程序。实现这种过程需要借助词法分析器,其输入时源程序,输出为单词符号。
过程:
源程序 ->词法分析器 ->单词符号
单词种类:基本字,标识符,常数,运算型,界符。
词法分析器由输入缓冲区、预处理子程序,扫描缓冲区、扫描器组成。输入缓冲区、预处理子程序将预处理好的子程序放到扫描缓冲区中,扫描缓冲区、扫描器直接进行单词的识别。
单词符号的识别有以下几种方法:超前搜索,直接分析法状态转换图法。其中状态转换图法需详细介绍,状态转换图是一张用来识别一定的符号串的有限方向图,结点代表状态用圆圈表示,箭弧指状态之间的连接,箭弧上的标记代表在射出节点下可能出现的字符或字符串
确定的有限自动机:
一个确定有限自动机(DFA)M是一个五元式:M = (S, ∑, f, s0, F)
1.S是一个有限的状态集合
2.∑是一个有穷的输入符号的字母表
3.f是从 S×∑->S的单值部分映射
4.s0是S中的一个元素,是唯一的初态
5.F是终态集 (可空)
非确定的有限自动机:
正规式与有限自动机的等价性:
对于任何∑上NFA M都可构造一个∑上的正规式V,使得 L(V) = L(M) 其中,L(M)是∑上NFA M所能识别的字的全体L(V)是∑上的正规集
感悟: 句法分析难度大了,NFA的确定化,基本能够掌握,正规文法与有限自动机的等价性以及正规式和有限自动机的等价性的证明学的不太好,总之还是要多看多听,才能学会这门课,对我来说不太简单,所以还要下功夫!
习题见下一个博客