【编译原理】第三章 词法分析

4 篇文章 0 订阅
订阅专栏

3.1 单词的描述

正则表达式(Regular Expression,RE)是一种用来描述正则语言的更紧凑的表示方法
例:正则语言L={a}{a,b} *({ε}∪({.,_}{a,b}{a,b} *))
正则表达式r = a(a|b) *( ε | (.| _)(a|b)(a|b) *)
正则表达式可以由较小的正则表达式按照特定规则递归地构建。每个正则表达式 r定义(表示)一个语言,记为L(r )。这个语言也是根据r的子表达式所表示的语言递归定义的

1、正则表达式的定义

ε是一个RE,L(ε) = {ε}
如果 a∈∑,则a是一个RE,L(a) = {a}
假设 r和 s都是 RE,表示的语言分别是 L®和L(s),则
➢ r|s 是一个RE,L( r|s ) = L(r )∪L(s)
➢ rs 是一个RE,L( rs ) = L(r ) L(s)
➢ r* 是一个RE,L( r* )= (L(r ))*
➢ (r ) 是一个RE,L( (r ) ) = L(r )
运算的优先级:*、连接、|

2、正则语言

可以用RE定义的语言叫做正则语言(regular language)或正则集合(regular set)

3、正则表达式的代数定律

4、正则文法与正则表达式等价

对任何正则文法 G,存在定义同一语言的正则表达式 r
对任何正则表达式 r,存在生成同一语言的正则文法 G

5、正则定义

正则定义是具有如下形式的定义序列:
d1→r1
d2→r2

dn→rn
每个di都是一个新符号,它们都不在字母表 Σ中, 而且各不相同
每个ri是字母表 Σ∪{d1 ,d2 , … ,di-1}上的正则表达式

3.2 单词的识别

1、有穷自动机

(1)FA

一类处理系统建立的数学模型
这类系统具有一系列离散的输入输出信息和有穷数目的内部状态(状态:概括了对过去输入信息处理的状况)
系统只需要根据当前所处的状态和当前面临的输入信息就可以决定系统的后继行为。每当系统处理了当前的输入后,系统的内部状态也将发生改变

(2)FA的典型例子

(3)FA模型

(4)FA的表示

(5)FA定义(接收)的语言

(6)最长子串匹配原则

当输入串的多个前缀与一个或多个模式匹配时,总是选择最长的前缀进行匹配
在到达某个终态之后,只要输入带上还有符号,DFA就继续前进,以便寻找尽可能长的匹配

2、有穷自动机的分类

(1)确定的有穷自动机 (DFA)


(2)非确定的有穷自动机(NFA)


(3)DFA和NFA的等价性

对任何NFA N ,存在定义同一语言的DFA D
对任何DFA D ,存在定义同一语言的NFA N

(4)带有“ε-边”的NFA

(5)带有和不带有“ε-边”的NFA 的等价性

(6)DFA的算法实现

3、从正则表达式到有穷自动机

(1)根据RE 构造NFA



例:r=(a|b)*abb 对应的NFA

(2)从NFA到DFA的转换


(3)子集构造法

(4)计算 ε-closure (T )

4、识别单词的DFA

(1)识别标识符的DFA

(2)识别无符号数的DFA


(3)识别各进制无符号整数的DFA

(4)识别注释的DFA

(5)识别Token的DFA

3.3 词法分析阶段的错误处理

1、错误类型

单词拼写错误 例:int i = 0x3G; float j =1.05e;
非法字符 例:~ @

2、错误检测

如果当前状态与当前输入符号在转换表对应项中的信息为空,而当前状态又不是终止状态,则调用错误处理程序

3、错误处理

4、错误恢复策略

最简单的错误恢复策略: “恐慌模式 (panic mode)”恢复:从剩余的输入中不断删除字符,直到词法分析器能够在剩余输入的开头发现一个正确的字符为止

3.4 词法分析器生成工具Lex

1、Lex的构成

Lex语言、Lex编译器

2、Lex的使用

3、Lex程序结构

4、扫描器自动生成的意义

本章小结

编译原理
秋风扶柳笛的专栏
03-10 1890
1. 正则表达式定义的语言 1) a(a|b)*a 以a开头且以a结尾,中间由零个或多个a或b的实例构成的串 2) ((ε|a)b*)* 零个或多个a或b的实例构成的串 3)(a|b)*a(a|b)(a|b) 三个或多个a或b的实例构成的串,且倒数第三个实例一定为a。 4)a*ba*ba*ba* 零个或多个a的实例,三个b的实例构成的串。 !!5)(aa|bb)*((ab|ba)
编译原理第三章 词法分析
weixin_30294021的博客
05-02 189
一,词法分析器的作用 词法分析是编译的第一阶段。词法分析器主要任务是读入源程序的输入字符、将他们组成词素,生成并输出一个词法单元序列,每个词法单元对应于一个词素。 分析部分:词法分析、语法分析(简化编译器设计、提高编译器效率、增强编译器可移植性) 1)词法单元:词法单元名和可选的属性值组成。关键字、操作符…… 2)模式:词法单...
编译原理词法分析(三)
一直学,你始终是学生,但是只要创造一招,你便是宗师。
10-21 2500
本文是词法分析的第三篇文章。首先将介绍如何把一个正则表达式转换成一个有穷自动机,接着会给出一个最小化DFA状态数的算法,最后会回顾整个词法分析过程。
编译原理结构框架3词法分析
〓星★愿〓
12-02 2284
第3章 词法分析 重点:词法分析器的输入、输出,         用于识别符号的状态转移图的构造,         根据状态转移图实现词法分析器。 难点:词法的正规文法表示、正规表达式表示、         状态转移图表示,它们之间的转换。 题型:1.根据正则文法构造等价的正则表达式 n例3.6 将如下文法G转换成相应的正则表达式   S
编译原理 X - 练习题
qq_50918834的博客
11-20 899
编译原理 考前复习 - 练习题
编译原理第3章 词法分析.pdf
04-28
编译原理第3章 词法分析.pdf
编译原理第三章词法分析
最新发布
08-12
编译原理第三章词法分析 编译原理第三章词法分析编译器设计的重要组成部分,词法分析器是编译器的前端,负责将源代码转换为token序列。下面是编译原理第三章词法分析的知识点总结。 一、词法分析器结构和...
编译原理实验1——词法分析器设计
07-08
通过阅读和理解这些代码,你可以深入了解词法分析器的工作原理,并动手实践来提升你的编译原理知识。 总之,词法分析器是编译器的关键组件,它的设计直接影响到编译器的效率和错误检测能力。通过这个实验,你可以...
cifafenxi.zip_编译原理_编译原理词法分析_词法分析
09-19
编译原理是理解这一过程的理论基础,而词法分析编译器前端的第一步,它对源代码进行初步处理,为后续的语法分析和语义分析打下基础。本资料"编译原理词法分析"主要关注的就是这一阶段。 词法分析,又称为扫描...
CIFAFENXI.rar_编译原理_编译原理 词法分析_词法分析
09-20
在编程领域,编译原理是理解计算机语言处理过程的关键部分,它涉及到将高级语言转化为机器可执行代码的全过程。词法分析是编译过程的第一步,对于任何编程语言的解析至关重要。本文将深入探讨词法分析及其在C++中的...
有穷自动机的最小化c语言代码,为正规表达式(a|b)*a(a|b)构造一个最小化的确定的优先自动机...
weixin_36071371的博客
05-18 1523
|ε通过联立方程组求正规表达式:A = Aa|Sb|a = Aa|(Aa|ε)b|a= Aa+(Aa+ε)b+a=Aa+(Aab+b)+a=Aa+Aab+b+a=A(a+ab)+(b+a)根据方程X=Xt+r 必有X=t*r解的论断,可得A=(a+ab)*(b+a),进而可求得:S = Aa|ε = Aa+ε = Aa = (a+ab)*(b+a)a = (a|ab)*(b|a)a即文法的正规表达...
基于‘DFA’的使用‘表驱动法’识别‘字符串模式’的方法
hexiaole1994的专栏
04-19 4129
一、概述 1. 术语简介 1)DFA Deterministic Finite Automata,确定的有穷自动机,这是一个识别字符串模式的模型,术语参考自书籍《编译原理》。 该模型对应一个状态,字母表,和转换函数的集合。 例如:需要识别字符串aabb 状态:当前字符串识别的状态,在例子中,其中的,a,aa,aab,aabb对应不同的状态,假设对应为状态1,2,3,4,其中4被称作接受...
有限状态自动机 正则表达式
Zhangjay的专栏
04-19 5733
有限状态自动机 状态表达式
词法分析
weixin_33964094的博客
10-29 154
词法分析器的任务是按照一定模式从源程序中识别出记号(token). 我们使用正规式描述这一模式,并通过有限自动机进行识别. 正规式与正规集 语言是在有限字母表上有限长字符串的集合. 正规式又称正则表达式, 是一种特殊的字符串用来描述一类的字符串的集合. 我们把可用正规式描述(其结构)的语言称为正规语言或正规集. 在介绍正规式之前, 我们先定义几个字符串集合中的概念: \(\epsilon\): ...
编译原理02】识别无符号整数
weixin_44254920的博客
10-27 1508
Problem Description 已知无符号整数的文法G[S]: S→dS S→ε 其中d表示0~9的任一数字 编写一个DFA程序,判断输入的符号串是否为无符号整数。 Input 输入多行符号串,输入EOF结束。 Output 判断每行的符号串是否为无符号整数,如果是无符号整数,输出"accept";如果不是无符号整数, 输出 “not accept”。 Sample Input 1 2345 1234.5 Sample Output accept not accept C++代码实现: #inc.
正则表达式基本语法
weixin_30872671的博客
02-16 145
1、正则表达式的作用   正则表达式是很繁琐的,但也相当有用。学会正则表达式,可以让你做很多工作时都成倍地提高效率。正则表达式的作用可以概括为三个方面测试字符串内模式、替换文本、基于模式匹配从字符串中提取子字符串。 它的应用领域也相当广泛,C#, java, python等等语言中都有应用。这里主要说明python中的正则表达式。 2、正则表达式语法   正则表达式是由普通字符(如a-z)...
编译原理(3):词法分析
学愈进而愈惘
09-18 8791
本文内容:介绍正则定义,正则表达式有穷自动机(确定的有穷自动机 DFA,不确定的有穷自动机 NFA), NFA 转换为等价的 DFA,DFA 的化简,识别单词的 DFA ,典型例题及详细解答。
编译原理--正则文法与正则表达式
热门推荐
Meskjei的博客
04-01 2万+
对任何正则文法G,存在定义同一语言的正则表达式r 对任何正则表达式r,存在生成同一语言的正则文法G 正则文法到正则表达式的转换 将正则文法中的每个终结符表示成关于它的一个正则表达式方程,获得一个联立方程组 依照求解规则: 若x=αx∣βx=\alpha x | \betax=αx∣β(若x=αx+βx=\alpha x + \betax=αx+β),则解为:x=α∗βx=\alpha^*...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【深度学习】踩坑日记:模型训练速度过慢,GPU利用率低 59364
  • 【个人总结】概率论与数理统计在人工智能领域的应用 31181
  • 【深度学习】常见的提高模型泛化能力的方法 21013
  • 【深度学习】卷积神经网络中Dropout、BatchNorm的位置选择 17186
  • 【数字音频】采样率、声道与采样深度 10644

分类专栏

  • 计算机视觉 12篇
  • 模式识别 3篇
  • 图像处理 1篇
  • 三维重建 4篇
  • 数据库系统 8篇
  • 编译原理 4篇
  • 机器学习竞赛 1篇
  • 软件构造课件精译 23篇
  • 计算机系统 2篇
  • 数字音频 2篇
  • 数据结构与算法 1篇
  • Web开发 2篇
  • 软件构造 25篇
  • 深度学习 34篇
  • CUDA编程 4篇
  • 个人总结 11篇
  • 算法题 4篇

最新评论

  • 【深度学习】踩坑日记:模型训练速度过慢,GPU利用率低

    Nico Leclerc: 我感觉是不是和服务器在用的人有关,如果只有自己用的话,我测试出来没什么区别,但是如果有别人同时在使用的话,虽然没测试过,但感觉设为True还是很有必要的

  • 【深度学习】踩坑日记:模型训练速度过慢,GPU利用率低

    weixin_52991234: 现在搞清楚了吗

  • 【深度学习】踩坑日记:模型训练速度过慢,GPU利用率低

    Lan-1011: pin_memory是锁页内存,将内存的tensor转义到gpu显存。 我有个问题:共享显存就是从内存出来的,batchsize大到用了共享显存的情况下,pin_memory=True能快多少?应该没区别吧。

  • 【深度学习】踩坑日记:模型训练速度过慢,GPU利用率低

    Lan-1011: 应该是看自己的模型代码。小白问怎么减少yolo模型的日志io操作频率

  • 【深度学习】踩坑日记:模型训练速度过慢,GPU利用率低

    有一个传说: 请问解决了吗是怎么回事

大家在看

  • golang中通过反射给对象赋值 reflect.Value,reflect.Type, 自定义异常 最佳实践 635
  • P4:一些常用的汇编指令。 101
  • 在线实习项目|泰迪智能科技企业级项目学习,暑期大数据人工智能学习
  • Oracle 11g参数调优(建议) 722
  • BSOJ5125 秀秀的森林

最新文章

  • 【个人总结】2020计算机保研经历(北大信科、上交、浙大、南大、中科院)
  • 【目标检测】Towards Accurate One-Stage Object Detection with AP-Loss
  • 【行人重识别】Unsupervised Salience Learning for Person Re-identification
2020年58篇
2019年44篇
2018年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码横岗网站seo优化永湖百度竞价坑梓百度标王坑梓网站优化排名南山百度竞价平湖优化光明企业网站改版松岗标王塘坑SEO按效果付费坪山百度网站优化南山营销型网站建设荷坳网站优化民治网站优化软件惠州建设网站深圳品牌网站设计荷坳外贸网站建设大鹏推广网站南澳优化松岗百度竞价木棉湾至尊标王南联网站设计宝安百度网站优化排名惠州建设网站爱联网站优化推广同乐优秀网站设计盐田如何制作网站爱联网站搭建丹竹头百度seo石岩品牌网站设计罗湖网站制作歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化