编译原理-词法分析 课后习题+笔记

词法分析

来源:龙书(厚),南大课后作业

p78 3.3.2

试描述下列正则表达式定义的语言:

  1. a(a|b)*a
  2. ((ε|a)b*)*
  3. (a|b)*a(a|b)(a|b)
  4. a*ba*ba*ba*
  5. !! (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*
Answer

(a) 由 a 开头并结尾的由 a 和 b 构成的字符串
(b) 由 a 和 b 构成的字符串
© 倒数第三位为 a 的由 a 和 b 构成的字符串
(d) 仅含 3 个 b 的由 a 和 b 构成的字符串
(e) 含有偶数个 a 和偶数个 b 的由 a 和 b 构成的字符串

注意: 请准确描述语言的性质而不是列举满足正则表达式串

知识点(正则表达式)
  • 运算的优先级:* > 连接 > |,如(a) | ((b)©) = a | bc

  • 在这里插入图片描述

  • 在这里插入图片描述

p79 3.3.5

试写出下列语言的正则定义:
(1) 包含 5个元音的所有小写字母串,这些中按顺序出现。

Answer
want -> other* a (other|a)* e (other|e)* i (other|i)* o (other|o)* u (other|u)*
other -> [bcdfghjklmnpqrstvwxyz]
知识点(正则定义)

在这里插入图片描述

p86 3.4.1

给出识别练习 3.3.2 (厚书) 中各个正则表达式所描述的语言状态转换图 。

  1. a(a|b)*a
  2. ((ε|a)b*)*
  3. (a|b)*a(a|b)(a|b)
  4. a*ba*ba*ba*
Answer
  1. NFA:

    3 4 1-1-nfa

    DFA:

    NFADFAab
    {0}AB
    {1,2,3,5,8}BCD
    {2,3,4,5,7,8,9}CCD
    {2,3,5,6,7,8}DCD

    最少状态的 DFA(状态转换图):
    3 4 1-1-dfa
    合并不可区分的状态 B 和 D
    3 4 1-1

  2. ((ε|a)b*)* 注意初始的NFA集合是开始状态0的ε闭包,不是只有0

    3 4 1-2

    NFADFAab
    {0,1,2,4,7}ABC
    {1,2,3,4,6,7}BBC
    {1,2,4,5,6,7}CBC
  3. (a|b)*a(a|b)(a|b)

    NFA:

    3 4 1-3-nfa

    DFA:

    NFADFAab
    {0,1,2,4,7}ABC
    {1,2,3,4,6,7,8,9,11}BDE
    {1,2,4,5,6,7}CBC
    {1,2,3,4,6,7,8,9,10,11,13,14,16}DFG
    {1,2,4,5,6,7,12,13,14,16}EHI
    {1,2,3,4,6,7,8,9,10,11,13,14,15,16,18}FFG
    {1,2,4,5,6,7,12,13,14,16,17,18}GHI
    {1,2,3,4,6,7,8,9,11,15,18}HDE
    {1,2,4,5,6,7,17,18}IBC


最少状态的 DFA(状态转换图):

合并不可区分的状态 A 和 C

3 4 1-3

  1. a*ba*ba*ba*

    3 4 1-4

知识点(NFA ,DFA )
  • FA的表示:转换图(Transition Graph)
  • 最长子串匹配原则(LongestString MatchingPrinciple)
  • DFA 在这里插入图片描述
  • NFA
    在这里插入图片描述
  • 转换表 (Transition table) 表示法(有ε边)
    在这里插入图片描述

解答步骤:正则表达式->NFA -> DFA -> 最少状态的 DFA(状态转换图)

  • 正则表达式->带ε边的NFA
    在这里插入图片描述

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

  • NFA->DFA(子集构造法)
    注意新建的NFA状态集合中经过一个a/b边还能接着走ε边
    起始集合是起始状态的ε闭包
    在这里插入图片描述
  • DFA -> 最少状态的 DFA(状态转换图)
  1. 初始划分为 {非终态},{终态}
  2. 若经过a/b边,到达的状态处于同一集合(不一定是自己集合),则不分开,否则分开。直到不能再分,得到最小DFA
    在这里插入图片描述

p96 3.6.4 找出其标号为 aabb 的至少两条路径,越短越好,这个 NFA 接受 aabb 吗?

在这里插入图片描述注: 本题对书上的目作了一些修改,原是找出所有标号为aabb的路径,本题只要求找出至少两条最短路径。

Answer

0-1-0-1-2-3
0-3-0-1-2-3

知识点

p96 3.6.5

给出如下练习中的 NFA的转换表
在这里插入图片描述

Answer

与NFA到DFA转换不同,没有ε边

stateabε
0{1}{3}
1{2}{0}
2{3}{1}
3{0}{2}
知识点

在这里插入图片描述

p105 3.7.1

将下列图中的NFA转换为 DFA
在这里插入图片描述

Answer

Transition table

NFA StateDFA Stateab
{0,1,2,3}AAA

DFA

3 7 1-3

知识点

NFA->DFA(子集构造法)

菜鸡姜姜
关注 关注
  • 5
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
编译原理——语法分析题目解析
Mr.蚂蚁的博客
07-05 2029
编译原理——语法分析题目解析 上下文无关文法怎么求? 题目1:3.5按指定类型,给出语言的文法。 ​ (1)的上下文无关文法; ​ (2) 字母表Z={a,b}上的、同时只有奇数个a和奇数个b的所有串的集合的正规文法; ​ (3) 由相同个数a和b组成句子的无二义文法。 解: ​ (1)题目给出的意思是,有i个a, j 个b, b的个数永远比a多。对题目要求进行拆解分析: 有 i 个a, j 个 b——S-> aSb b 比 a 多 ,那说明 S 在推导的时候必须要有1个
编译原理 —— 有穷自动机(FA)
starter_____的博客
01-26 8587
有穷自动机的定义 系统只需要根据当前所处的状态和当前面临的输入信息就可以决定系统的后继行为。当前状态+当前输入=后继行为 FA模型 FA转换图 结点:FA的状态 初始状态(开始状态):只有一个,由start箭头指向 终止状态(接收状态):可以有多个,用双圈表示 带标记的有向边:如果对于输入a,存在一个从状态p到状态q的转换,就在p、q之间画一条有向边,并标记上a。(如图中0到1)...
第三章_词法分析_习题讲解_(编译原理)
07-02
第三章_词法分析_习题讲解_(编译原理)...........
编译原理-练习题-2】词法分析大题
计忆芳华的博客
04-27 1万+
1.构造正规表达式a(aa)*bb(bb)a(aa) 的NFA(非确定有限自动机)。 解 2.构造正规表达式((a|b)*|aa)*b的NFA。 解: 3.将以下DFA(确定有限自动机) 最小化 解: 1)将状态分解为 终态集{Y} 非终态集{X,1,2} 2)考察非终态集{X,1,2}接收a字符 X接收a字符到1 (1属于非终态集) 1不接收字符 2接收a字符到1 (1属于非终态集)...
编译原理(3):词法分析
学愈进而愈惘
09-18 8572
本文内容:介绍正则定义,正则表达式,有穷自动机(确定的有穷自动机 DFA,不确定的有穷自动机 NFA), NFA 转换为等价的 DFA,DFA 的化简,识别单词的 DFA ,典型例题及详细解答。
编译原理实验之词法分析
weixin_45797533的博客
05-24 3805
(1) 学会针对DFA转换图实现相应的高级语言源程序。(2) 深刻领会状态转换图的含义,逐步理解有限自动机。(3) 加深对词法分析原理的理解。(4) 理解词法分析和语法分析的接口方式。
西南科技大学《编译原理》实验报告__实验名称 TEST语言编译系统.zip
11-12
西南科技大学《编译原理》实验报告__实验名称 TEST语言编译系统.zip
编译原理习题(含答案)——3词法分析——哈工大陈鄞配套版本
热门推荐
JZ
06-14 5万+
词法分析1 词法分析器的输出结果是( )。A. 单词自身值B. 单词在符号表中的位置C. 单词的种别编码 D. 单词的种别编码和自身值2 词法分析器不能( )。A. 识别出数值常量B. 过滤源程序中的注释C. 扫描源程序并识别记号D. 发现括号不匹配 3 ( )这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。A. 存在B. 不存在C. 无法判定是否存在D. 以上答案都不对 4 ...
编译原理-词法分析实验(javascript+html)实现编译原理可视化(含报告)
06-01
编译原理-词法分析实验(javascript+html)实现编译原理可视化 通过设计一个词法分析程序,对词法进行分析,加强对词法的理解...本实验雷同可能性少,并且采用可视化展示的方法,很直观可以看出编译原理词法分析的细节
编译原理--词法分析器+语法分析器 源代码
01-07
词法分析器:1) 定义目标语言的可用符号表和构词规则; 2) 依次读入源程序符号,对源程序进行单词切分和识别,直到源程序结束; 3) 对正确的单词,按照它的种别以<种别码,值>的形式保存在符号表中; 4) 对不正确的...
编译原理实验报告(含代码:状态转换图;DFA扫描;First集,follow集计算)
12-20
实验一:状态转换图 输入一串数据,利用状态转换图程序求出“关键字,标识符,整数,运算符,实数”。 实验二:DFA扫描 打开一个编写好的源代码,利用DFA扫描程序删除多行注释,单行注释,多余的行,多余的空格。 实验三:first集,follow集计算 输入一个不含左递归的文法,由此程序求出该文法的first集和follow集。
编译原理 - 词法分析:C/C++实现
11-15
通过这次实验,我深入了解了词法分析的过程和原理,并体会到了其在编译过程中的重要性和作用。在这个过程中,我遇到了一些困难,但也获得了宝贵的经验和收获。首先,词法分析是编译过程中的第一个阶段,负责将源代码...
c语言编译原理实验-课设-词法分析程序-代码+报告
01-02
设计并实现一个C语言词法分析程序(1)可以识别出用C语言编写的源程序中的每个单词符号,以记号的形式输出每个单词符号。 (2)可以识别并跳过源程序中的注释。 (3)可以统计源程序中的语句行数、各类单词的个数、以及字符...
编译原理-词法分析实验(c++版)
05-22
请根据给定的文法设计并实现词法分析程序,从源程序中识别出单词,记录其单词类别和单词值,输入输出及处理要求如下: (1)数据结构和与语法分析程序的接口请自行定义;类别码需按下表格式统一定义; (2)为了...
编译原理实验——状态转换图实现以及路径的显示
qq_51700102的博客
10-14 1893
编译原理状态转换图以及路径显示实现
编译原理———用c++实现状态转换图
m0_69336654的博客
10-15 1657
编译原理——c++编译实现通过状态转换图实现对单词的识别。输入: 符号串 输出: yes / No – 该符号串是否符合状态转换图的定义 状态转换路径。 采用直接转向法实现。
画出C语言注释的状态转换图,编译原理习题和课件
weixin_31993501的博客
05-19 2421
1.1.叙述正规式(00 | 11)*( (01 | 10) (00 | 11)* (01 | 10) (00 | 11)* )*描述的语言。答案:该正规式所描述的语言是,所有由偶数个0和偶数个1构成的串。另外,和该正规式等价的正规式有( 00 | 11 | ( (01 | 10) (00 | 11)* (01 | 10) ) )*。备注:一、如果题目要求转化为NFA,则方法1:按照课本P54-5...
[编译原理-词法分析(二)] 使用状态转换图识别词法单元
Yanuas的博客
02-20 5728
前言 一个小Demo, 用于分析的源文件比较简单, 主要的部分都有, 扩展比较容易. 将正则表达式表示的模式构造为状态转换图. 在本文中只列举状态转换图. 双缓冲区(代码中的Buffer类) 数字的状态转换 保留字和ID的状态转换 运算符的状态转换 用于分析的源文件 结果 前情提要 一、词素模式 二、打印Token 三、StateTransition类 四、StateTransitio...
编译原理 词法分析器的设计、状态转换图、正规式和正规集
nyist_yangguang的博客
03-07 1345
4https://www.bilibili.com/video/BV1Yx411D7kE?p=4
利用c++编译原理----词法分析
最新发布
05-08
词法分析器是编译器中的一个重要组成部分,也是编译器的第一步。它的主要任务是将源代码中的字符流转换为有意义的单词流,也就是将源代码转换为一系列的词法单元。在C++中,词法分析器使用正则表达式来定义各种词法单元,例如标识符、关键字、运算符、常量等等。 在C++中,词法分析器通常采用有限自动机(DFA)来实现。DFA是一种状态机,它可以接受一个有限的输入字符序列并产生一个有限的输出序列。通过定义各种状态和状态之间的转移规则,DFA可以根据输入字符流自动地进行状态转移,最终生成词法单元序列。 在编写词法分析器时,需要注意一些细节问题,例如如何处理注释、如何处理字符串常量、如何处理数字常量等等。此外,还需要考虑如何处理错误输入和错误单词等异常情况。

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

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

热门文章

  • 编译原理-语法分析 课后习题+笔记 11276
  • 2019-5浙江工业大学计算机学院转专业一志愿机试题目 8040
  • 2019-6浙江工业大学计算机学院转专业二志愿机试题目 4782
  • 编译原理-词法分析 课后习题+笔记 4734
  • 编译原理-中间代码生成 课后习题+笔记 4074

分类专栏

  • 编译原理总结
  • 离散数学
  • 编译原理作业

最新评论

  • 编译原理-语法分析 课后习题+笔记

    菜鸡姜姜: 不好意思太久了忘记怎么做了表情包

  • 编译原理-语法分析 课后习题+笔记

    Colofulu: 第7题第一问I7是怎么来的呀

  • 2019-6浙江工业大学计算机学院转专业二志愿机试题目

    2401_83042215: 谢谢,能加你微信吗?有事想请教

  • 2019-6浙江工业大学计算机学院转专业二志愿机试题目

    2401_83042215: 谢谢,能加你微信吗?

  • 2019-6浙江工业大学计算机学院转专业二志愿机试题目

    菜鸡姜姜: 会参加,不过不在新专业培养计划里的课挂了也没关系

大家在看

  • 基于Matlab实现相当快速的梯度域混合
  • 【网络安全】什么是网络安全?
  • 【Java EE】网络原理——几种方式构造HTTP请求 332
  • JavaGUI之Swing实现管理系统~
  • 网络安全学习基础:IP隧道技术详解

最新文章

  • 编译原理-代码生成 课后习题+笔记
  • 编译原理-运行时刻环境 课后习题+笔记
  • 编译原理-中间代码生成 课后习题+笔记
2022年6篇
2020年1篇
2019年12篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

两个鬼故事网上能起名如何给自己起一个英语名字韦起名史各庄深入浅出数据分析羊年李姓男孩起名矗立的拼音yami语音江山美色缉魂结局华夏起名网女孩起名字牛年钢材公司起名免费参考水产公司起名大全汽车金融虎威战机中文的名字起英文名中国推销员电影女孩叠字取名起名大全云舒谢闵行小说免费阅读蔡起名字大全女孩孩子起名三字越狱软件下载快餐店起什么名字吸引人呢给刚刚出生宝宝起名洒的商标起什么名字张姓女孩起名字大全免费起英文名网站免费花草茶加盟美甲美睫美容店起名大全少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化