编译原理第三章 词法分析与有穷自动机

本文详细介绍了词法分析程序的功能,包括输入输出形式,并探讨了正规集、正规式、正规文法、确定的有穷自动机(DFA)和不确定的有穷自动机(NFA)的定义。还讨论了这三者之间的转换方法,如NFA到DFA的转换以及DFA的化简。此外,提到了正规式如何转换为正规文法和有穷自动机。

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描述的正规集相同。
正规文法和正规式的转换
正规文法 => 正规式:

  1. 把每个非终结符按照规则表示成一个正规式方程(|变为+,->变为=)
  2. 依照求解规则以及分配律、交换律和结合律求解,以获得以文法开始符号S的不含非终结符的正规式。

求解规则:

  • 若x = ax + b,则 x = x*b;
  • 若x = xa + b,则x = bx*

正规式 => 正规文法:
字母表∑上的正规式R到文法G={VN,VT,P,S}的转换。

  1. 令VN=∑
  2. 对正规式R选择终结符Z生成规则Z->R,并令Z为文法G的开始符号S
  3. 对形如A->ab的规则,新增非终结符B使之转换为A->aB,B->b两个规则
  4. 对形如A -> a*b的规则,转换为A ->aA | b
  5. 不断使用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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值