自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 资源 (5)
  • 收藏
  • 关注

原创 3.4 词法分析 --- DFA的代码表示

DFA 的代码表示概念上讲,DFA是一个有向图实际上有不同的DFA的代码表示转移表(类似于邻接矩阵)哈希表跳转表…取决于在实际实现中,对时间空间的权衡转移表:这个表的行,是所有字符,比分a,b,c,…这个表的列,是所有状态, q0,q1可以编码成 2 * 3的矩阵char table[M][N] //默认256 M,N 是确定的 M是构造DFA不同状态的个数, N 是...

2020-04-27 17:36:03 1301

原创 3.2-3.3 词法分析---NFA转换到DFA~DFA 最小化 Hopcroft 算法

子集构造算法:因为NFA不适合直接用来做词法分析器的识别,是因为它的状态转移是不确定的,这种情况下写一个算法往往需要回溯,对于分析的效率影响会比较大,所以需要用子集构造算法由NFA将它转换成与它等价的DFA(因为DFA是确定有限状态自动机),最终转换成词法分析器可以使用的代码。子集构造算法思想:a(b|c)*下图是一个NFA,很明显它的转移边包含 ε 所以它的状态转移是不确定的,我们所要做...

2020-04-23 18:33:40 1001

原创 3.1 词法分析 --- 从正则表达式到非确定有限状态自动机

回顾:自动生成我们想要有一个词法分析器的自动生成器(也就是一个工具)来自动生成这个词法分析器,那么程序员只需要写一个声明式的规范(例如正则表达式),作为一个规范来描述所有词法单元的规则,然后就会有这样的工具来帮我们生成出一个词法分析器出来,它典型的是一个 DFA。那么这个自动语法生成工具的内部工作流程图下图所示: RE(正则表达式) -> NFA(非确定的有限自动机) ->...

2020-04-23 10:17:22 878

原创 2.4 有限状态自动机

有限状态自动机(FA)从数学上来讲:我们可以把它看成一个有输入输出接口的模块或者系统它可以接受一个输入的字符串,作为输出的话,它可以回答 Yes 或者 No,也就是这个有限状态自动机它能不能接受或者识别你给他提供的这样一个字符串,如果能的话就回答Yes否则的话它就回答No我们可以使用一个元组来描述这个有限状态自动机 M自动机的数学概念:M = (∑,S,q0,F,ε)∑ 是字母表S...

2020-04-22 17:03:20 476

原创 2.3 词法分析の正则表达式

引:算数表达式 1,2,3算符 + - * /由这些来构造更复杂的表达式 1+2+3 …正则表达式:对给定字符集 ∑ = { c1,c2,…,cn};∑ 由要编译的语言决定,如果在编译的语言是C语言,那么∑ 是ASCII 如果要编译的语言是Java 那么∑ 是Unicode …但作为数学语言的抽象性,我们就把 ∑ 给抽象作为公共的字符集定义。归纳定义(1,2 可以看作一个基本...

2020-04-22 16:44:46 354

原创 2.1~2.2词法分析的任务,词法分析器的手工构造

编译器的阶段:阶段:编译器可以分成若干个阶段,包含 frontend(前端) , backend(后端)。前端接收源程序,产生中间表示 IR,它处理的是和源语言程序相关的属性。后端接收中间表示,继续生成目标程序,处理一般是具体的结构和目标机器相关的数据我们把这部分成为编译器的阶段划分。前端:例如:c 语言程序[源程序] ,传入字符流,经过词法分析器,到记号流 ,记号...

2020-04-22 16:39:53 1005

原创 1.2 编译器的高层结构

编译器的高层结构编译器是一个具有非常 模块化 的高层结构。input---->[C]---->out -->前端:处理和输入相关部分,比方语言,语法规则约束条件。(词法分析,语法分析后端:目标机器指令集,约束,前端语法结构怎么映射到指令集。(指令生成,指令优化input --> [前端 ---> 后端] ---> out抽象的多个阶段(phase...

2020-04-22 16:19:44 293

原创 编译器概述

什么是编译器:编译器是一个程序,核心功能是把 源代码 翻译成 目标代码 。源代码: c/c++,Java,c#,html,sql,…目标代码: x86,IA64,ARM,MIPS,…编译器的核心功能:源代码经过编译器的翻译,生成了目标代码,这里的静态计算意思是编译器在对目标程序进行编译的过程中并不去执行这个代码,而是尝试以静态的方式对目标程序进行理解,理解的原因是编译器所生成的目标...

2020-04-22 16:05:25 1045

cocos2d-lua 3x 基础概念(包括场景、导演、在屏幕上显示自定义对象等)代码

详细说明见: https://blog.csdn.net/Tiantangbujimo7/article/details/124861145?spm=1001.2014.3001.5502

2022-05-19

cocos2d-x lua 3.10 消除水果源码和资源

cocos2d-x lua 3.10 消除水果源码和资源。 说明: https://blog.csdn.net/Tiantangbujimo7/article/details/124855704?spm=1001.2014.3001.5502

2022-05-19

List控件 响应Menu菜单消息 点击 对号 √ 后改变状态

List控件 响应Menu菜单消息 点击 对号 √ 后改变状态

2022-01-22

第二单元作业:词法分析器作业

在这部分中,你将使用图转移算法手工实现一个小型的词法分析器。 * 分析器的输入:存储在文本文件中的字符序列,字符取自ASCII字符集。文件中可能包括下面几种记号:关键字if、符合C语言标准的标识符、无符号整型数字、空格符、回车符\n。 * 分析器的输出:打印出所识别的记号的种类、及记号开始行号、开始列号信息。 注意:1. 忽略空格及回车符;2. 对于标识符和数字,要输出符号的具体词法单元(见下面的示例)... --------------------------------实现和输出----------------------- 输出结果: ID(ifx) (1,0) if (1,4) ID(iif) (1,7) if (1,17) NUM(234) (1,21) ID(iff) (2,28) if (2,36)

2020-04-22

小型编译器例子小型的从表达式语言Sum到栈计算机Stack的编译器

编译原理第一章: 学习作业一个小型的从表达式语言Sum到栈计算机Stack的编译器,补全代码后的部分 程序输出结果: 第一轮: push 5 push 4 add 第二轮: push 9

2020-04-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除