03词法分析

词法分析的任务:
从左到右逐个字符地对源程序进行扫描,产生一个个的单词符号,把由字符串组成的源程序改造成单词符号串的中间程序。
执行词法分析的程序称为词法分析器。

一、对于词法分析器的要求

1.词法分析器的功能和输出形式

词法分析器的功能:输入源程序,输出单词符号。

单词符号是一个程序语言的基本语法符号。程序语言的单词符号分类:
(1)关键字(for while)
(2)标识符 (x1 xname)
(3)运算符( + * )
(4)界符 ({ } 😉
(5)常数 (23 “abcdf”)

一个程序语言的关键字、运算符和界符都是确定的。但对于标识符和常数的使用是灵活的。

词法分析器所输出的单词符号形式:
(单词种别,属性值)
单词种别通常用整数编码。
属性值是反映单词符号特性或特征的值。

二、词法分析器的设计

1.输入、预处理

词法分析器的第一步工作是输入源程序文本到一个输入缓冲区中。
这样,词法分析的工作可以直接在这个缓冲区中进行。 在许多情况下,常常把输入串预处理一下 ,目的是为了方便单词符号的识别。
预处理的工作是将源程序中多余的空白符、跳格符、回车符、换行符等编辑性字符以及注释部分剔除掉,并将结果存入扫描缓冲区中。

2.状态转换图

状态转换图是设计词法分析程序的一个好途径。转换图是一张有限的有向图
结点代表状态,用圆圈表示,状态之间用箭弧连接。
箭弧上的标记代表在射出结点状态下可能出现的输入字符或字符类。

一张转换图只能含有有限个状态,其中一个被认为是初态,可以有一个或多个终态(双圈)

例如:
在这里插入图片描述
在这里插入图片描述

三、正规表达式与有限自动机

1.正规式与正规集

对于字母表∑,我们感兴趣的是它的一些特殊字集,即正规集。我们将使用正规式这个概念来表示正规集。下面是正规式和正规集的递归定义:

1)ε和Φ都是∑上的正规式,它们所表示的正规集分别为{ε}和Φ;
2)任何a∈∑,a是∑上的一个正规式,它所表示的正规集为{a};
3)假定U和V都是∑上的正规式,它们所表示的正规集分别记为L(U)和L(V),
那么,(U|V)、(U·V)和(U)也都是正规式。它们所表示的正规集分别为L(U)∪L(V)、L(U)·L(V)(连接积)和(L(U))(闭包)。
仅由有限次使用上述三步骤而得到的表达式才是∑上的正规式。仅由这些正规式所表示的字集才是∑上的正规集。

  算符的优先顺序:先“*”,次“·”,后“|”。

正规式的等价性:若两个正规式所表示的正规集相同,则称两者等价。

2.确定的有限自动机(DFA)

在这里插入图片描述

一个DFA可用一个矩阵表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示δ(s, a) 的值。这个矩阵称为状态转换矩阵。

在这里插入图片描述

3.非确定的有限自动机(NFA)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

NFA与DFA等价

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将 NFA M’ 进一步变换成等价的DFA M”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

例如:正规式(a|b) * (aa|bb)(a|b) *
求对应的NFA M,并转换出等价的DFA M’。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.正规文法与有限自动机的等价性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.正规式与有限自动机的等价性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.确定有限自动机的化简

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将DFA最小化的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、词法分析器的自动产生

LEX语言:是专门描述词法分析器的语言。

一个LEX源程序主要包括两部分: 正规定义式和识别规则。

   (1)∑上的正规定义式为:
       d1 → r1

               ……

       di → ri

其中 di 表示不同的名字,
     ri 是∑ ∪ {d1 ,…, di-1}上的正规式。
     
  (2)识别规则是如下一串LEX语句:
         P1     { A1 }

               ……

         Pm     { Am }

其中 Pi 是一个正规式,称为词形,
     Ai 是一小段程序代码。

分析器L只能识别具有词形P1,……, Pm的单词符号,它指明在识别出词型为Pi的单词后,词法分析器应采取动作Ai。
分析器L一般是返回Pi的种别编码和属性值。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全糖去冰不加料

打赏一块钱💰也是钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值