这个项目是笔者在修的课程《编译原理》的实验。实验要求如下: 实验内容: 设计一个应用软件,以实现将正则表达式-->NFA >DFA-->DFA最小化-->词法分析程序 实验要求: (1)要提供一个源程序编辑界面,让用户输入正则表达式(可保存、打开源程序) (2)需要提供窗口以便用户可以查看转换得到的 ...
分类:
编程语言 时间:
2019-03-09 15:32:33
阅读次数:
935
想写终极程序,大都去写操作系统或编程语言了。编程语言可以极其复杂如C,也可以极简,只处理加减乘除如 calc。 1. 词法分析 %{ #include <stdio.h> #include "y.tab.h" int yywrap(void) { return 1; } %} %% "+" retu ...
分类:
编程语言 时间:
2019-02-24 10:26:15
阅读次数:
187
1. 词法分析器 函数 + skip\_one\_line: 跳过一行, 会在skip\_comment中注释为//的时候调用 + skip\_comment: // 和 / / + skip\_blanks: 跳过空白行, 会在skip\_comment处理完注释之后调用, 同时在get\_nex ...
分类:
其他好文 时间:
2019-02-15 15:58:45
阅读次数:
166
大多数编译可分为三个主要阶段:语法分析(Parsing),转换和代码生成。 语法分析(Parsing)通常为两个阶段:词法分析和语法分析(Syntactic Analysis)。 转换:将已经生成的 AST 转化成另一种形式。 代码生成:大多是表示使用 AST 生成代码。 [jamiebuilds/... ...
分类:
其他好文 时间:
2019-01-27 21:53:14
阅读次数:
212
1.hive的介绍 什么是hive:Hive是基于hadoop的一个数据仓库工具,实质就是一款基于hdfs的MapReduce计算框架,对存储在HDFS中的数据进行分析和管理。 hive的工作方式:把存放在hive中的数据都抽象成一张二维表格,提供了一个类似于sql语句的操作方式,这些sql语句最终被hive的底层翻译成为MapReduce程序,最终在h
分类:
其他好文 时间:
2019-01-13 21:40:37
阅读次数:
208
本节知识点是《编译原理》第三章-词法分析,学习参考教材为清华大学出版社《编译原理》第三版: 前情提要: 字母表∑1和∑2的乘积( product): ∑1∑2 ={ab|a ∈∑1, b ∈ ∑2} 例: {0, 1} {a, b} ={0a, 0b, 1a, 1b} 字母表∑的n次幂( power ...
分类:
其他好文 时间:
2019-01-08 21:18:13
阅读次数:
349
Prepare的好处 Prepare SQL产生的原因。首先从mysql服务器执行sql的过程开始讲起,SQL执行过程包括以下阶段 词法分析->语法分析->语义分析->执行计划优化->执行。词法分析->语法分析这两个阶段我们称之为硬解析。词法分析识别sql中每个词,语法分析解析SQL语句是否符合sq ...
分类:
数据库 时间:
2019-01-08 21:12:03
阅读次数:
176
在编译原理(第三版清华大学出版社出版)中第三章的词法分析中,3.4、3.5、3.6小节中分别讲解了 1、什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机) 2、如何将 不确定的有穷自动机(NFA) 转化为 确定的有穷自动机(DFA); 3、如何化简DFA; 4、正规式和有穷自动机的等价性 ...
分类:
其他好文 时间:
2019-01-08 21:07:25
阅读次数:
268
转自:http://www.fly63.com/article/detial/45 使用js的混淆加密,其目的是为了保护我们的前端代码逻辑,对应一些搞技术吃饭的公司来说,为了防止被竞争对手抓取或使用自己的代码,就会考虑如何加密,或者混淆js来达到代码保护。 1、为什么需要js混淆 在web系统发展早 ...
分类:
其他好文 时间:
2019-01-06 23:03:04
阅读次数:
300
一些很重要的说明:前面三篇博客详细的介绍了,引擎与编译器和作用域的关系,重点需要理解的是编译器中的分词与词法分析,JavaScript的特有的“赋值操作的左右侧”引用操作;编译阶段的词法作用域的工作原理和eval、with的欺骗词法作用域;然后还有介绍了函数作用域与块级作用及相关的ES6新特性,接着 ...
分类:
编程语言 时间:
2019-01-05 12:10:28
阅读次数:
173