最后是最小化算法, 它的目的其实在于通过合并的方式, 减少状态数, 然后使得最终生成的代码中用来表示状态转移的数据结构尽量小, 以此节约空间和时间. DFA中运用最广泛的算法是hopcroft算法, 接下来就是对该算法的简要介绍... 这个算法的第一步是将所有的状态(也就是代码中的nodes) 划分 ...
分类:
其他好文 时间:
2016-05-07 01:00:43
阅读次数:
114
接下来的步骤就是从NFA转换为DFA...首先要思考的第一个问题是为什么要从NFA转换到DFA, 那么我们可以先来看看他们的区别, 通俗来讲, NFA就是说给定一个输入的字符, 可以有多种状态可以选择, 而DFA的话, 就只有一种状态可以选择... 由这里就可以发现, 其实DFA在代码的实现难度上是 ...
分类:
其他好文 时间:
2016-05-07 00:46:59
阅读次数:
268
今天整理了一下学习编译原理时,实现语言Medusa时写的笔记,搞出了一篇类似说明文档的东西,介绍下Medusa
语法部分
Medusa是一门动态脚本语言,语法和代码格式借鉴Python,运行代码在顶层书写。
Medusa不识别':' ';'等符号,但识别white spcae和换行符,用户编程注意:
1 + -9:执行结果是-8
1 + - 9:语法分析错误
...
分类:
编程语言 时间:
2016-05-06 12:25:03
阅读次数:
193
第二种词法分析的方式当然是词法分析器的自动生成器. 如lex, jlex 等等. 那么如何来让生成器知道我们想要生成的Token呢 ? 这就涉及到统一的声明式规范的问题, 换句话讲, 你将按照生成器的形式要求将声明式的规范交给生成器, 那么它就能够对其进行识别. 所以我们只需要完成声明式的规范即可完 ...
分类:
其他好文 时间:
2016-05-05 19:23:12
阅读次数:
179
编译原理的实验:完成对C++语言的词法分析
先说一下整体框架:
基类:Base 封装了一些基础的字符判断函数,如下:
int charkind(char c);//判断字符类型
int spaces(char c); //当前空格是否可以消除
int characters(char c);//是否是字母
int keyword(char str[]);//是否是关键字
in...
分类:
编程语言 时间:
2016-04-29 18:13:33
阅读次数:
220
编译原理的实验:完成对C++语言的词法分析
先说一下整体框架:
基类:Base 封装了一些基础的字符判断函数,如下:
int charkind(char c);//判断字符类型
int spaces(char c); //当前空格是否可以消除
int characters(char c);//是否是字母
int keyword(char str[]);//是否是关键字
in...
分类:
编程语言 时间:
2016-04-26 20:26:06
阅读次数:
310
.net平台的组成只要有两部分 FCL:框架类库 CLR:公共语言运行时 .net程序简单的编译原理 1.0:使用C#编译器(csc.exe) 将C#源代码编译成程序集+{编译之前:会检查C#源代码是否符合C#的语法规范,如果符合 才会编译成程序集,如果不符合,将会报错,就不会生成程序集了} 程序集 ...
分类:
Web程序 时间:
2016-04-26 17:30:48
阅读次数:
305
原文地址:编译原理 词法分析
编译原理词法分析词法分析的主要任务是从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用于语法分析。
1.正则表达式对给定的字符集∑={c1,c2,...,cn},归纳定义:
1.空串ε是正则表达式
2.对于任意c∈∑,c是正则表达式
3.如果M和N是正则表达式,则下列表达式也是正则表达式
(1)选择 M|N={M,N}
(2)连接 MN={mn|m∈M,n∈N...
分类:
其他好文 时间:
2016-04-22 20:23:13
阅读次数:
224
下面是一个图书的单价表:计算概论 28.9 元/本数据结构与算法 32.7 元/本数字逻辑 45.6元/本C++程序设计教程 78 元/本人工智能 35 元/本计算机体系结构 86.2 元/本编译原理 27.8元/本操作系统 43 元/本计算机网络 56 元/本JAVA程序设计 65 元/本给定每种 ...
分类:
其他好文 时间:
2016-04-19 19:08:11
阅读次数:
183
一、简单表达式的翻译器 通过上一篇知道,预测语法分析不能处理左递归的文法(比如对stmt分析,则遇到多个以stmt开头的产生式,这使得向前看符号无法匹配一个分支,而右递归则是可以使用预测分析法处理)。 1. 抽象语法和具体语法 抽象语法:每个内部结点代表一个运算符,该结点的子结点表示这个运算符的分量 ...
分类:
其他好文 时间:
2016-04-19 18:51:09
阅读次数:
157