词法分析与有穷自动机
1、词法分析程序的功能
词法分析程序(词法分析器、扫描器):执行词法分析的程序,以字符串形式的源程序作为输入,以单词符号或单词符号表示的源程序作为输出。
语言的单词符号一般可分为五种:关键字、标识符、常数、运算符和界符。
词法分析的输出形式:(单词种别,单词自身的值)
2、正规集、正规式、正规文法、确定的有穷自动机、不确定的有穷自动机的定义。
语言单词符号的两种定义方式:正规式+正规文法。
正规式:设有字母表∑={a1,a2,a3,a4…an},在该字母表上的正规式D和所表示的正规集L有以下关系。
正规式D包含三种运算符:连接"."、或“|”、闭包“*”,优先级递增。连接一般忽略不写。
L(e1 | e2) = L(e1) ∪L(e2).
L(e1e2) = L(e1)L(e2)
L((e1)*) = L( (e1)*)
正规式等价:正规式R1和R2描述的正规集相同。
正规文法和正规式的转换:
正规文法 => 正规式:
- 把每个非终结符按照规则表示成一个正规式方程(|变为+,->变为=)
- 依照求解规则以及分配律、交换律和结合律求解,以获得以文法开始符号S的不含非终结符的正规式。
求解规则:
- 若x = ax + b,则 x = x*b;
- 若x = xa + b,则x = bx*。
正规式 => 正规文法:
字母表∑上的正规式R到文法G={VN,VT,P,S}的转换。
- 令VN=∑
- 对正规式R选择终结符Z生成规则Z->R,并令Z为文法G的开始符号S
- 对形如A->ab的规则,新增非终结符B使之转换为A->aB,B->b两个规则
- 对形如A -> a*b的规则,转换为A ->aA | b
- 不断使用3.和4.,直到每条规则左部只含一个非终结符,满足正规文法的定义
有穷自动机,具有离散输入输出的一种抽象数学模型,有“确定的”和“不确定”之分,两类都能准确识别正规集。
确定有穷自动机(DFA):一个确定有穷自动机M是五元组M={Q,∑,f,S,Z}。
Q是有穷状态集合,一个元素对应一个状态
∑是有穷输入字母表,每个元素是一个输入字符
f是从Q X ∑到Q的单值映射:f(qi, a) = qi
S是唯一的初态
Z是终态集
一个DFA可由状态转化矩阵表示,DFA M存在状态转化图。
对于∑*的任何字符串B,如存在一条从初态到某一终态的道路上的所有弧的标记和为B,则称B为该DFA M所接受(识别)。特别的,如果初态等于某一终态,则ε可被M识别(接受)。
非确定有穷自动机(NFA):一个非确定有穷自动机M是五元组{Q,∑,f,S,Z}
其中Q,∑,Z意义等同于DFA,状态转换函数f不是单值函数,是多值函数。
f(qi,a)={某些状态集合},a可以为ε,S是非空初态集。
通过数学归纳法,对于每个NFA M存在DFA M’,使L(M)=L(M’)
3、正规文法、有穷自动机、正规式三者之间的互相转换方法。不确定有穷自动机到确定自动机的转换及确定有穷自动机的化简。
由正规式R构造NFA:P40
NFA确定化为DFA:P41
DFA的化简:P44
有穷自动机到正规式的转换:P46
右线性文法到有穷自动机的转换:P47
左线性文法到有穷自动机的转换:P48
本文详细介绍了词法分析程序的功能,包括输入输出形式,并探讨了正规集、正规式、正规文法、确定的有穷自动机(DFA)和不确定的有穷自动机(NFA)的定义。还讨论了这三者之间的转换方法,如NFA到DFA的转换以及DFA的化简。此外,提到了正规式如何转换为正规文法和有穷自动机。
1373

被折叠的 条评论
为什么被折叠?



