编译原理第三次作业

news/2025/3/13 22:42:16/文章来源:https://www.cnblogs.com/aaaauv/p/18770826

3.3.5

(1) 正则表达式:

define) other -> {bcdfghjklmnpqrstvwxyz}

answer:other* a(other|a)* e(other|e)* i(other|i)* o(other|o)* u(other|u)*

NFA: (由python代码生成,除了这个下面的DFA是基于开源工具绘制的)

from graphviz import Digraphdef create_nfa():nfa = Digraph(format="png", node_attr={"shape": "circle"}, edge_attr={"label": "ε"})nfa.attr(rankdir="LR")  # 水平布局nfa.attr(size="64,64")  nfa.attr(ranksep="2")  nfa.attr(nodesep="1")  nfa.attr(fontsize="12")  # 定义状态states = ["start", "q0", "q1", "q2", "q3", "q4", "q5", "final"]for state in states:nfa.node(state)# 定义其他字符集合other = "bcdfghjklmnpqrstvwxyz"# 初始状态到q0的ε转移nfa.edge("start", "q0", label="ε")# q0: other* -> ε转移nfa.edge("q0", "q0", label=f"{other}|ε")# q0 -> q1: a(other|a)*nfa.edge("q0", "q1", label="a")nfa.edge("q1", "q1", label=f"{other}|a")# q1 -> q2: e(other|e)*nfa.edge("q1", "q2", label="e")nfa.edge("q2", "q2", label=f"{other}|e")# q2 -> q3: i(other|i)*nfa.edge("q2", "q3", label="i")nfa.edge("q3", "q3", label=f"{other}|i")# q3 -> q4: o(other|o)*nfa.edge("q3", "q4", label="o")nfa.edge("q4", "q4", label=f"{other}|o")# q4 -> q5: u(other|u)*nfa.edge("q4", "q5", label="u")nfa.edge("q5", "q5", label=f"{other}|u")# q5 -> final: ε转移nfa.edge("q5", "final", label="ε")return nfanfa = create_nfa()
nfa.render("nfa_diagram", view=True)

NFA转DFA表格:

l la le li lo lu lother
q0 q1 q0
q1 q1 q2 q1
q2 q2 q3 q2
q3 q3 q4 q3
q4 q4 q5 q4
q5 q5 q5

(6)
正则表达式:
(b|a (bb|aa)* (ba|ab)) (bb|aa|(ba|ab) (bb|aa)* (ba|ab)) *
NFA:(从这里往下面的第一个ε缺标,默认省略)

NFA转DFA表格:

l la lb
3 0 3 1 3
0 3 0 0 2
2 2 1 0 2
1 2 1 3 1

(8)
正则表达式:
b* (a+b?)*
NFA:

NFA转DFA表格:

l la lb
1 2 1
2 2 0
0 2 trap

(9)
正则表达式:
b* | b* a + | b* a + b a*
NFA:

NFA转DFA表格:

l la lb
1 2 1
2 2 0
0 0 trap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/898405.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十二课 问答

这堂课的重点是谈一谈阅读理解(Reading Comprehension)解释一下两个例子信息提取:假设现在我们想要做一个关于奥巴马的背景信息提取,如图所示,我们现在想要知道奥巴马在哪里受的教育,我们将其转换成奥巴马在哪里毕业,然后进行阅读理解就好了 语义角色标注:假设现在我们…

Spring Task学习 -2025/3/13

Spring Task只要是需要定时处理的场景都可以使用Spring Task Cron 表达式cron在线表达式生成器 Spring Task 使用步骤示例

Rhino 8.12 下载与安装

Rhinoceros (Rhino) 是一款功能强大的 3D 建模软件,广泛应用于建筑设计、产品设计、工程分析、动画和插图等领域。Rhino 的建模主要基于曲线网络的构建,通过在空间中创建曲线网络并将其转换为曲面,用户可以实现高精度的 3D 模型设计。 1、安装包 扫描下方二维码关注「软知社…

.net微信支付接入

1.申请微信商户号 2.申请服务号 3.在商户号中接通服务号并且申请native支付 4.申请证书、密钥 5.nuget上安装“SKIT.FlurlHttpClient.Wechat.TenpayV3”包 6.发布到服务器时务必在应用程序池 - 应用程序 - 高级设置 - 加载用户配置文件 设置未true!!!!!否则会遇到下面的B…

HarmonyOS NEXT 实战系列01-ArkTS基础

​ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,保持了TS的基本风格,同时通过规范定义强化开发期静态检查和分析,提升程序执行稳定性和性能。 ArkTS提供了声明式UI范式、状态管理、渲染控制等相应的能力,让开…

WebGame - 免费在线游戏,畅玩不停!

在快节奏的现代生活中,休闲娱乐成为了人们缓解压力的重要方式。无论是上班族、学生,还是游戏爱好者,大家都希望能够随时随地玩到好玩的游戏,而 WebGame(https://www.webgame.one/)正是这样一个理想的平台!WebGame - 免费在线游戏,畅玩不停! 在快节奏的现代生活中,休闲…

springboot的mapper层的小问题

①如果sql语句如上,在进行苍穹外卖的分类查询时,不会报错,对应的sql语句是 ②如果sql语句如下 对应的sql语句为 对于上面的情况,我觉得是系统前端的问题,因为在第二种情况下,可以进行状态的启用,但是进行状态的禁用时,其对应的status为空

SpringCloud学习笔记(1)

SpringCloud学习笔记(1)之前我们学习的项目一是单体项目,可以满足小型项目或传统项目的开发。而在互联网时代,越来越多的一线互联网公司都在使用微服务技术。 从谷歌搜索指数来看,国内从自2016年底开始,微服务热度突然暴涨:那么:到底什么是微服务? 企业该不该引入微服务…

SpringCloud学习笔记(2)

SpringCloud学习笔记(2)1.网关路由 1.1.认识网关 什么是网关? 顾明思议,网关就是网络的关口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的路由****和转发以及数据安全的校验。 更通俗的来讲,网关就像是以前园区传达室的大爷。外面的人要想进入园…

2025年Postman的五大替代工具

虽然Postman是一个广泛使用的API测试工具,但许多用户在使用过程中会遇到各种限制和不便。因此,可能需要探索替代解决方案。本文介绍了10款强大的替代工具,它们能够有效替代Postman,成为你API测试工具箱的一部分。 什么是Postman?Postman是开发人员和测试工程师用来测试API…

基于pyqt5的开发环境搭建

1、安装python 3.11.5 2、升级pip python -m pip install --upgrade pip 3、安装PyQt5相关包 pip install PyQt5 pip install PyQt5-tools 4、配置pycharm------ 参考:https://blog.csdn.net/Pan_peter/article/details/130606896您的资助是我最大的动力! 金额随意,欢迎来赏!…

荣耀magic 7 pro 连接三星watch6

1.安装三星智能穿戴app(自己download文件夹的)。然后打开三星智能穿戴app时自动下载wear os。 2、打开wear os,允许所有权限,打开三星智能穿戴进行手表连接。在手机中会自动安装以下三个软件: com.samsung.wearable.watch6plugin com.samsung.wearable.watchfaceplugin co…