首页 > 其他分享 >三、词法分析

三、词法分析

时间:2023-05-04 17:56:30浏览次数:32  
标签:分析 状态 转换 NFA 矩阵 词法 DFA

词法分析

  • 词法分析基于正则文法进行的,即识别的单词是该类文法的句子
  • 词法分析的任务是识别单词
  • 单词:保留字、标识符、常数、运算符、分界符
  • 标识符是语法概念,名字是语义概念

词法分析器

  • 词法分析器用于识别单词
  • 词法分析程序,接受输入的源程序,输出结果是单词的种别编码单词的属性值
  • 扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位单词
  • 词法分析器的结构:预处理子程序、扫描缓冲区、扫描器

有限自动机

确定的有限自动机 \(DFA(Deterministic ~\ Finite ~\ Automata)\)

非确定的有限自动机 \(NFA(Nondeterministic ~\ Finite ~\ Automata)\)

\(\star NFA\) 和 \(DFA\) 比较

  • \(DFA\) 是 \(NFA\) 的特殊形式
  • \(DFA\) 初态唯一,\(NFA\) 可以有多个初态
  • \(DFA\) 和 \(NFA\) 都可以有多个接受状态(终态)
  • \(DFA\) 的状态转换函数是单值映射,\(NFA\) 的状态转换函数是多值映射
  • \(DFA\) 后继状态唯一,\(NFA\) 后继状态不一定唯一
  • \(DFA\) 任何状态都没有 \(ε\) 转换,\(NFA\) 可以有 \(ε\) 转换

构造与某一正规式等价的DFA
解题步骤:

  1. 根据正规式画出对应状态的状态转换图
  2. 根据状态转换图画出对应状态转换矩阵
  3. 根据状态转换矩阵得到重命名的状态转换矩阵 (子集构造算法)
  4. 根据重命名状态转换矩阵得出 \(DFA\)

DFA化简(最小化)
解题步骤:

  1. 划分终态组和非终态组
  2. 若读入某个字符,得到的后继状态不在同一个集合里,就继续划分
  3. 合并等价状态
  4. 画出新的 \(DFA\)

题型

1. 设计正规式

给出下面正规式表达式

  1. 以01结尾的二进制数串
    解:(0|1)*01
  2. 能被5整除的十进制整数
    解:(1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(0|5)|(0|5)
  3. 包含奇数个1或奇数个0的二进制数串
    解:0*1(0|10*1)*|1*0(1|01*0)*
  4. 不包含子串abb的由a和b组成的符号串的全体
    解:b*(a|ab)*
  5. 每个1都有0直接跟在右边
    解:(0|10)*
$\star\star\star$2. 正规式构造 \(NFA\) ,由 \(NFA\) 确定化为 \(DFA\) ,\(DFA\) 的化简

构造下列正规式相应的NFA,确定化为 \(DFA\) ,并且对 \(DFA\) 化简

  1. 1(0∣1)*101
    解:
    \(NFA\) :

    状态转换矩阵:

    I 0 1
    {1}  \(\emptyset\) {2} 
    {2}  {2}  {2,3} 
    {2,3}  {2,4}  {2,3} 
    {2,4}  {2}  {2,3,5} 
    {2,3,5}  {2,4}  {2,3} 

    重命名后的状态转换矩阵:

    I 0 1
    A \(\emptyset\) B
    B B C
    C D C
    D B E
    E D C

    确定化后的 \(DFA\) :

    1.非终态组:{A,B,C,D} ,终态组:{E}
    2.{A},{B,C,D},{E}
    3.{A},{B,C},{D},{E}
    4.{A},{B},{C},{D},{E}
    化简后的 \(DFA\) :


  1. a*(b|a)(a|b)*ba
    解:
    \(NFA\) :
    !

    状态转换矩阵:

    I a b
    {1}  {1,2}  {2} 
    {1,2}  {1,2}  {2,3} 
    {2}  {2}  {2,3} 
    {2,3}  {2,4}  {2,3} 
    {2,4}  {2}  {2,3} 

    重命名后的状态转换矩阵:

    I a b
    A B C
    B B D
    C C D
    D E D
    E C D

    确定化后的 \(DFA\) :
    !

    1.非终态组:{A,B,C,D} ,终态组:{E}
    2.{A,B,C},{D},{E}
    3.{A},{B,C},{D},{E}

    化简后的状态转换矩阵:

    I a b
    A B B
    B B C
    C D C
    D B C

    化简后的 \(DFA\) :
    !

标签:分析,状态,转换,NFA,矩阵,词法,DFA
From: https://www.cnblogs.com/zzmxj/p/17369998.html

相关文章

  • python_数据分析与挖掘实战_词云
    #-*-coding:utf-8-*-#代码12-1评论去重的代码importpandasaspdimportreimportjieba.possegaspsgimportnumpyasnp#去重,去除完全重复的数据reviews=pd.read_csv("../../data/0404/reviews.csv")reviews=reviews[['content','content_type']......
  • 雷达校招 | 往年雷达算法校招笔试题分析
    公众号【调皮连续波】,2023年度会员内容更新公告(04.10)序号类别内容文件路径1雷达工具雷达工具箱MATLAB源码\根目录\雷达工具箱【正文】编辑|小助理 审核|调皮哥1、2016年5月美国佛罗里达州发生的特斯拉自动驾驶第一起命案,当时Models行驶在一条双向、有中央隔离带的公路上,自动驾驶......
  • iOS MachineLearning 系列(10)—— 自然语言分析之文本拆解
    iOSMachineLearning系列(10)——自然语言分析之文本拆解本系列的前几篇文章介绍了iOS中有关图像和视频处理的API,视觉处理主要有Vision框架负责,本篇起,将介绍在iOS中MachineLearning领域相关的自然语言处理框架:NaturalLanguage。1-简介NaturalLanguage是iOS种提供的一种处理自......
  • 4D毫米波雷达技术发展趋势分析
    公众号【调皮连续波】【正文】1、4D毫米波雷达产品特征及应用前景分析1.1 4D毫米波雷达的功能与特征4D毫米波雷达在3D毫米波雷达检测目标3D信息(雷达与目标的距离、相对径向速度、水平角度的数据)的基础上,增加对目标高度(垂直角度)的估计,相比于3D毫米波雷达具有天线数量多且密度高......
  • 电商产品评论数据情感分析
    1、评论去重的代码importpandasaspdimportreimportjieba.possegaspsgimportnumpyasnp#去重,去除完全重复的数据reviews=pd.read_csv("./reviews.csv")reviews=reviews[['content','content_type']].drop_duplicates()content=reviews['con......
  • cPanel XSS漏洞分析研究(CVE-2023-29489)
    一、漏洞原理漏洞简述cPanel是一套在网页寄存业中最享负盛名的商业软件,是基于于Linux和BSD系统及以PHP开发且性质为闭源软件;提供了足够强大和相当完整的主机管理功能,诸如:Webmail及多种电邮协议、网页化FTP管理、SSH连线、数据库管理系统、DNS管理等远端网页式主机管......
  • 电子商务网站用户行为分析
    电子商务网站用户行为分析 #-*-coding:utf-8-*-#代码11-1importosimportpandasaspd#修改工作路径到指定文件夹#os.chdir("D:/chapter11/demo")os.chdir("D:\\大三下\\大数据实验课\\data\\Unit11")#第一种连接方式#fromsqlalchemyimportcreate_engi......
  • proxyempire的未来:技术发展和趋势分析
    在当今数字时代,随着我们越来越依赖互联网,安全和隐私的重要性变得越来越高。随着这一趋势的不断发展,proxyempire作为网络安全的解决方案也逐渐得到了广泛的应用。作为一种中间服务器,proxyempire能够在互联网上代表客户端访问目标服务器,从而保护客户端的隐私并且能够访问一些被封锁的......
  • Tinyhttpd:抓包分析【3】
    一、问题引入分析http就离不开报文,或者可以利用wireshark抓包解析报文。二、解决过程http协议基于tcp/ip之上的应用层。tcp三次握手httpgetrequest报文通过报文内容可以看到,客户端HTTPVersion是HTTP1.1。客户端请求方法:GEThttprespond报文通过报文内......
  • 第十二章.电商产品评论数据情感分析
    1、评论去重的代码importpandasaspdimportreimportjieba.possegaspsgimportnumpyasnp#去重,去除完全重复的数据reviews=pd.read_csv("./reviews.csv")reviews=reviews[['content','content_type']].drop_duplicates()content=revi......