编译原理:第六节

使用C语言实现正规表达式到自动机的转换 正规表达式与自动机 编程完成以下功能: (1) 将一个正规表达式转换为 NFA (2) 将一个 NFA 转换为 DFA (3) 对 DFA 进行最小化 (4) 利用 DFA 判断输入的字符串是否为符合词法规则 阅读详情

编译原理:正规式与有限自动机

正规式与正规集

正规式的作用:表示语言
正规集的作用:表示语言的集合

正规表达式是一种表示法,可以详细描述高级程序语言单词符号或者说每一个正规表达式r 表示一个语言 L(r).例如可以用正规表达式表示C++语言的标识符,而 C++语言的标识符(集合)可以看作一个语言,因此正规表达式 r 实质是用来表示一个语言 L(r).


具体来看什么是正规式和正规集呢?看个例子:
设字母表为 {0,1}  ,则0,1, ε,Ø 都是该字母表上的正规式
0|1 ,0*,1*等也是字母表上的正规式
相应的正规集为:{0,1} {ε,0,00,000,0000,...} {ε,1,11,111,1111,...}

规定“*”, “连接” ,“|”运算左结合,

优先级由高到低

                      正规式 (a)|((b) *(c))  等价于a|b *c

  例:å={A,B,…,Z,a,b,…,z,0,1,…,9}

       正规式1:A |B... |Z|a |b...|z

       语言1:L( A) ∪ L( B)… ∪ L( Z) ∪ L( a) ∪ L( b)... ∪ L(z)

      = {A,B,…,Z,a,b,…,z}

       正规式2: 0 |1|.. . |9

       语言2:L(0) ∪ L(1) ∪... ∪ L(9)= { 0,1,…,9}


正则式与有限自动机

有限自动机接收的语言等价于正规文法产生的正则语言。而正规式或正则集定义的语言也为正则语言。所以,正规式与有限自动机在描述上等价。对于å上任一正规表达式r ,一定能构造一个NFA m ,使得L( r )=L(m)。

从正规式到有限自动机



举个转化的例子,如下图所示:



从有限自动机到正规式

对于å上任一NFA m,能构造å上一个正规表达式r,使得L( r )=L(m)。

首先,在m的转换图上加进S,Z两个结点。从S用e弧连接到m的所有初态结点,从m的所有终结(接受)结点用e弧连接到Z,从而构成一个新的NFA m’,L(m)=L(m’)。

反复使用下面的替换规则逐步消去NFA m’中的状态结点和弧,直至剩下S,Z为止。在消去结点的过程中,逐步用正规式标记弧。



举个转化的例子,如下图所示:



正规式,正规文法与有限自动机的关系:




VHDL有限状态机(单进程,双进程)交通灯示例 Finite State Machine有限状态机 它的逻辑流程图是: 注意!“当前状态”和“下一状态”的位置,我们将在下文的交通灯示例中理解。 设计要求: --我们要设计一个十字路口的交通灯,就两个按钮,东西方向一个(sensor2),南北方向一个(sensor)。流程就是,东西方向为红灯,南北在走人, --这时候东西方向的人想过马路,按下sensor2,然后红变绿,东西走,南北停。... 阅读详情

相关推荐

编译原理笔记3:有限自动机

有限自动机

VengaZ的学习博客 5878

有穷自动机到正规文法的转换方法

有穷自动机到正规文法的转换方法 给定有穷自动机 M = ( Q ,Σ , f , q 0 , Z )。按照下述方法可以从 M 构造出对应的正规文法G = ( V N , V T , P , S ),使得 L ( M ) = L ( G )。 (1 )令 V N = Q , V T = Σ , S = q 0 。 (2 )若 f ( A , a ) = B 且 B ∉ Z 时,则将规则 A → aB 加到 P 中。 (3 )若 f ( A , a ) = B 且 B ∈ Z 时,则将规则 A → aB |

qq_45180475的博客 2874

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 942

编译原理学习笔记5——词法分析2 正规集|正规式|自动机

编译原理学习笔记5——正规集和正规式确定有限自动机(DFA)非确定有限自动机 正规集和正规式 程序设计语言的单词符号都是一些特殊的字符串 正规集可以用正规式表示 正规式是表示正规集一种方法 一个字集合是正规集当且仅当它能用正规式表示 答案:B、C 仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的字集才是Σ上的正规集。 若两个正规式所表示的正规集相同,则称这两个正规式等价。如 b(ab)*=(ba)*b ∵L(b(ab))= L( (ba):b) 所以b(ab)=(ba

我的的博客 3120

初识机会网络仿真器ONE中ExternalMovement移动模型(导入外部移动数据)

最近半个月一直在研究ONE中关于ExternalMovement移动模型的源代码,在网上几乎没有找到相关的资料,很是苦恼,如果有共同研究方向的小伙伴欢迎联系我,共同讨论进步。 下面记录一下几点感悟: 1、使用外部数据的前提是在ONE的配置文件中增加及修改相关代码: Group.movementModel = ExternalMovement ExternalMovement.file = move...

qq_36974792的博客 657

VNC Viewer建立多个图形界面,来远程访问同一个服务器(Ubuntu)

如题。目前已经有了一个VNC viewer连接,那么如果再开一个图形界面呢? 思路主要是:新建一个用户,从这个用户新建一个vnc连接,然后访问图形界面。

the Blog of 等不到天亮丶等时光 5900

编译原理笔记【第八章 语义分析】

文章目录第一节 语义分析概述1.1 语义分析的任务1.2 语义分析和语法分析1.3 语义值1.4 语义动作和语义子程序1.5 翻译1.6 三地址码第二节 说明语句的翻译第三节 赋值语句的翻译第四节 goto语句的翻译第五节 if语句的翻译第六节 while语句的翻译第七节 for语句的翻译第八节 函数的翻译 第一节 语义分析概述 1.1 语义分析的任务 语义检查 一致性检查(数据类型是否一致、操作是否合法) 越界检查(数组维数是否正确、下标是否越界) 语义处理 说明语句的翻译(相关信息登记到符号表中) 执行

CodePandas 9429

【k8s实战】 在离线项目混部 通过kubeflow(tf-operator)部署TensorFlow机器学习任务+prometheus/grafana监控资源使用全过程(最新 图文)

目录在离线混合部署概念最新版kubeflow部署TensorFlow部署二级目录三级目录 在离线混合部署概念 先举一个例子,众所周知的天猫双十一当天的流量非常之大,那么就需要成百上千台服务器构成一个超大集群来提供计算能力,但是双十一过去之后,集群资源就面临着浪费的局面。假设业务分为在线和离线两种模式:在线任务需要资源相对较少,但要求响应时间短;离线任务则不需要对任务进行迅速响应,但是计算量相对较大、占用资源多。那么我们应该怎么在K8S集群上完成这两种业务的部署、并且使得CPU利用率始终维持在一个比较高的水平

Eros1on的博客 1545

编译原理笔记【第七章 语法分析】

文章目录第一节 语法分析概述1.1 语法分析的任务1.2 语法分析的分类1.3 语法分析具体方法第二节 回溯分析法2.1 分析过程2.2 引起回溯的原因2.3 消除公共左因子2.4 消除直接左递归2.5 消除间接左递归第三节 递归下降分析法第四节 预测分析法第五节 算符优先分析法第六节 LR分析法 第一节 语法分析概述 1.1 语法分析的任务 对源程序经过词法分析后转换称的符号串(即单词符号的序列)进行分析,根据语法规则,判断它是否是一个正确的句子。如果是,可以构造出一个提现句子结构的语法树;如果不是,可以

CodePandas 1101

医药行业新零售项目数据分析报告——基于Excel的分析与可视化

不同平台客户支付金额用数字+百分比展示更直观。各大区支付金额分析较为粗浅,后续可加入不同大区人数、配送费等进行细分分析。图表略微单一,可采用组合图,运用两个及以上维度对数据进行分析。数据来源本项目数据来源于某机构的项目案例,以上分析内容均为本人原创,不涉嫌抄袭。原做项目,新平台首发。

2401_84213513的博客 1495

ComfyUI节点流实战:用Wan2.1制作电商短视频全流程(附人物/商品模板)

本文提供了一份详尽的ComfyUI实战教程,指导用户如何利用通义万相Wan2.1图生视频模型,高效制作适用于抖音等平台的电商短视频。内容涵盖从环境部署、核心工作流搭建,到针对服装、3C数码等品类的高级提示词模板与参数调优,旨在帮助电商从业者快速生成高质量、高保真商品展示视频,显著提升内容生产效率。

potato的博客 1279

编译原理-第六节(东南大学廖力老师)

附bilibili链接:https://www.bilibili.com/video/BV1cW411B7DW?p=11 https://www.bilibili.com/video/BV1cW411B7DW?p=12

weixin_42725431的博客 279

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 931

第六节 练习1

#include<iostream> #include<iomanip> #include<cstdio> using namespace std; int main() { double a = 3.3,b = 2.2; cout << (a / b - 1) * b; //c++浮点数不能取余 => 余数 => 整除余数才好看 => 整除的专利 return 0; } 结果: ...

厦门饮冰信竞 149

基于V7-690T FPGA纯逻辑实现NVMe SSD盘的读写(不使用软核)

a.NVMe的Admin CQ与Admin SQ命令放在Host内存中;因此SQ的64B要用FPGA的DDR或开一个bram空间存放,同理NVME写到HOST的CQ命令也需要存放在FPGA的DDR或一个bram空间,host收到NVME传来的MSI/MSI-X中断后,去CQ存放空间取CQ指令;b. 发送identify命令后,需要发送tial doorbell通知NVME;(发送CNS01h获取4096字节的固件信息等;发送CNS02h获取1024字节的namaspace list)

宝沐熙的博客 833

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android Framework究竟值不值得你死磕?_framework有必要安装吗

最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。还有高级架构技术进阶脑图、高级进阶架构资料帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。一起互勉~网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84544434的博客 1258

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android Framework 11

安卓开发应用的领域很广,就业机会同样也很多,但是市面上做APP开发的人很多,而擅长处理APP开发土壤,能够在底层进行操作的技术人员并不多。在这里分享一份腾讯团队内部培训的Android Framework学习资料,相信这份资料会在你学习的路上让你事半功倍。Android framework就是这样的领域,而且他也和嵌入式有些像,大部分的从业者都是转行来的。的高速发展下,很多互联网公司对于底层开发技术人才的需求量是日益剧增,尤其是在智能终端开发领域更是明显。目前做Android的都知道,在。

2401_89791230的博客 914

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

「2022Android面试高薪必备」收藏过万的Android面试之framework汇总,学会了,学废了?_剖析framework面试 冲击android高级职位 目录

文章所有资料全部已经打包整理好,另外小编手头上整理了大量Android架构师全套学习资料,Android核心高级技术PDF文档+全套高级学习资料+视频+2021 BAT 大厂面试真题解析资料展示:网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取一个人可以走的很快,但一群人才能走的更远!

2401_84123113的博客 703

编译原理笔记【第二章 数据类型】

文章目录第一节 引言1. 什么是数据类型2. 数据类型的作用3. 数据类型的分类第二节 内部类型1. 内部类型的特点2. 内部类型的优越性第三节 用户定义类型1. 笛卡尔积2. 有限映像3. 序列4. 递归5. 判定或6. 幂集第四节 C语言的数据类型第五节 类型检查第六节 类型转换第七节 类型等价第八节 实现模型 第一节 引言 具体和抽象 具体:二进制串(机器语言) 抽象:符号注记(汇编语言,高...

CodePandas 1625

史上最全,Android 11

​。

2401_84123077的博客 73

「2024Android面试高薪必备」收藏过万的Android面试之framework汇总,学会了,学废了?_剖析framework面试 冲击android高级职位 目录

简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。

2401_84123113的博客 705

最全阿里大佬首次分享《Android11,高级安卓面试题及答案2024级

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长。而不成体系的学习效果低效漫长且无助。时间久了,付出巨大的时间成本和努力,没有看到应有的效果,会气馁是再正常不过的。所以学习一定要找到最适合自己的方式,有一个思路方法,不然不止浪费时间,更可能把未来发展都一起耽误了。如果你是卡在缺少学习资源的瓶颈上,那么刚刚好我能帮到你。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

2401_84520118的博客 789

Android应用层开发越来越少了,主流技术演变也越来越快,如今得Android开发者如何自处?_做开发的越来越少

最后看一下学习需要的所有知识点的思维导图。在刚刚那份学习笔记里包含了下面知识点所有内容!文章里已经展示了部分!如果你正愁这块不知道如何学习或者想提升学习这块知识的学习效率,那么这份学习笔记绝对是你的秘密武器!

2401_84104809的博客 649

青少年学python第六节_青少年学Python(第2册)

本书是与叮当码编程智能教学平台配套的系列丛书之一(青少年人工智能教育系列丛书)。该系列丛书是针对中小学人工智能教育开发的,须配合中小学编程智能教学平台使用。1.作为内部教学资料,本系列丛书已经在四川、湖南、深圳等地的多个中小学使用;2.本系列丛书例题丰富,以主题授课、多学科融合为主要特色,根据中小学学生的特点和学习能力编排内容,寓教于乐;3.与本书配套的“叮当码编程智能教学平台”,教学资源丰富,智...

weixin_29839415的博客 386
上一篇: Android:自定义View(一)
下一篇: 编译原理:第七节 及词法分析器的C++和Python实现
cassiePython
博客等级 码龄12年 303粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值