编译原理课程笔记 第四章:词法分析

本文详细介绍了文法、词法分析、不同类型的语法分析方法(包括自顶向下和自底向上),以及正规式、正规文法与有限自动机(DFA和NFA)的概念和它们之间的转换过程,强调了正规式和正规文法的等价性及其在语言处理中的应用。
摘要由CSDN通过智能技术生成

[第一章:文法(语法)和语言]
[第四章:词法分析]
[第五章:自顶向下的语法分析]
[第六章:自底向上的语法分析(移进—归约分析)]
[第七章:LR分析:一种自下而上的分析方法]
[第八章:语法制导和中间代码生成]
 

单词的描述工具:正规式

正规式和正规集:正规式中只允许包含这几种符号 空集,空元素,或,连接(一般省略),闭包

例:

正规文法与正规式(重点难点)

正规文法 Þ 正规式

正规式Þ 正规文法

牢记这四个产生式与正规式的对应关系(尤其是正规式转正规文法用得到)

 

  1. 自动机

有限自动机:能识别正规文法所定义的语言和正规式所表示的集合(这二者是对应的)

有限自动机分为DFA(确定的~)和NFA(不确定的~)

DFA:

一个确定的有限自动机DFA M是一个五元组:M=(K, Σ, f, S, Z),其中:

K:有穷集,每个元素称为一个状态。K=S∪Z

Σ:输入状态表,元素为输入符号(写在转换箭头上面的那个)

F:转换函数

S:S∈K,唯一的初态

Z:ZÍK,终态集

确定的状态机:其确定性表现在转换函数是单值函数

 加*表示终态

工作原理:对于Σ*中的任何一个字符串t,若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字符串等于t,则称t可为DFA M所识别(读出或接受)。若M的初态结点同时又是终态结点,则e可以为M所识别。

NFA:同样是五元组,与DFA的差别表现在:

F不是函数,而是(多值)映射,即f(W,a)={P1,P2,…,Pn}表示在当前状态W下,输入字符a时,将转换到状态P1,P2,…,Pn;

S:是非空集合,即有不止一个初态

NFA图像的表示:

每个节点可能射出多条弧,这些弧上可能有相同的字而且可以是空字ε

整张图至少含有一个初态和若干个(可以是0个)终态结点

某些结点既可以是初态也可以是终态结点

对于某个输入字符存在多个后继状态,即状态的转向是不确定的

只要一个符号串集是正规的,就存在对应可识别它的NFA

与某一NFA等价的DFA不唯一

NFA确定化---子集法:

要解决的两个问题:

解决方法:

 

NFA转换为DFA的步骤:设Σ={a, b, c}:构造一张表,第一行第一列为ε-closure({S});求Ia、Ib、Ic并检查,未在第一列出现过者,填入下行首列;重复下划线步骤;将状态子集重新命名

上图其实有个问题,NFA中4是终态,新的状态子集里所有包含4的都是新终态,在给这些状态命名时应该加上* 如*C、*D

DFA最小化:没有多余状态,没有等价状态 ---分割法

等价状态判定:

两个状态s,t若一致,则满足:1. 一致性(同是终态或非终态)  2. 蔓延性(三种形式:s t通过a到x;s t通过a到x y,x y等价;s t通过a到终态x y(即使x y是互不相干的终态,s t也等价))  注意:C、F等价,是C和F发出的全部弧(a和b)都符合蔓延性

 

正规式和有限自动机的等价性

NFA M转正规式:

自动机上加两个节点SZS结点用ε弧到自动机(M)的所有初态,自动机的所有终态用ε弧到Z; 逐步消去M’中的所有结点,直至剩下SZ结点,在消结过程中,逐步用正规式来标记弧

例:

  

正规式转NFA M

例:

正规文法和有限自动机的等价性(上面的是正规式和自动机):

文法是四元组,自动机是五元组

正规文法转NFA M:  需要新增一个终态Z

NFA M 转正规文法:  对NFA的终态Z,增加一个产生式Z->ε

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值