上回我们介绍了两种有穷自动机模型——确定性有穷自动机DFA和非确定性有穷自动机,以及从正则表达式经过NFA最终转化为DFA的算法。有些同学表示还是难以理解NFA到底怎么转化为DFA。所以本篇开头时我想再多举一个例子,看看NFA转化为DFA之后到底是什么样。首先我们看下面的NFA,它是从一组词法分析所...
分类:
其他好文 时间:
2015-03-01 11:46:37
阅读次数:
242
atitit..sql update语法的词法分析,与语法ast构建
1. 要使用sql udpate语法的dsl ,需要写个解释器。。 1
2. 词法分析的实现 1
2.1. 扫描器的实现 SqlUpExpTokener 1
2.2. 等号操作符的转态 EqxState 2
2.3. 单引号的转态 SingleQuoeState 3
2.4. 逗号操作的转态 CommaStat...
分类:
数据库 时间:
2015-02-18 01:00:20
阅读次数:
331
定义一个函数
在JavaScript中,可以通过“函数声明”和“函数表达式”来定义一个函数,比如
1、通过“函数声明”来定义一个函数
function t1(){}
2、通过“函数表达式”来定义一个函数
t2 = function(){}
但是两种方式定义函数,效果是不同的
t1是函数声明,‘词法分析’时,AO.t1 = function(){},-...
分类:
编程语言 时间:
2015-02-11 10:57:02
阅读次数:
198
以前写过两版算术表达式解析代码,但都是基于栈结构或者树模型的,并不是通用的算法。其实算术表达式解析是最基本的词法分析算法,直到我看了《自制编程语言》里面介绍的递归向下分析法,才明白这种问题的终极解决方案是使用词法分析和语法分析。。//用于词法定界的头文件 token.h 1 #ifndef _T.....
分类:
其他好文 时间:
2015-02-11 00:26:58
阅读次数:
456
JavaScript代码自上而下执行,但是在js代码执行前,会首先进行词法分析,所以事实上,js运行要分为词法分析和执行两个阶段。
词法分析
词法分析主要分为3步:
第1步:分析形参
第2步:分析变量声明
第3步:分析函数声明
如果存在函数嵌套,则从外往内进行词法分析
具体步骤:...
分类:
编程语言 时间:
2015-02-09 16:03:33
阅读次数:
128
自动生成的词法分析器跟之前讲的图转移算法是类似的,因为是自动生成,为了把整个流程形式化,需要用另外一个数学工具--有限状态自动机。 从数学上讲,有限状态自动机是什么概念呢? 输入一个字符串,如果字符串能够接受,则输出Yes,否则输出No。有限状态自动机是一个五元组,M=(S, Σ, ...
分类:
其他好文 时间:
2015-02-01 14:48:50
阅读次数:
213
1.词法分析中的“贪心法” 编译器将程序分解成符号的方法是,从左到右一个字符一个字符地读入,如果该字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分:如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成一个有意....
分类:
其他好文 时间:
2015-01-27 00:28:55
阅读次数:
287
cmm是c的一个子集,保留字只有如下几个
if else while read write int real
特殊符号有如下几个
+ - * / = ( ) ; { } [ ] /* */
标识符:由数字,字母或下划线组成的字符串,且不能使关键字,第一个字母不能是数字
如果了解c很容易明白上面的是什么意思,也会明白cmm其实有的东西并不多,所以做cmm解释器相对来说比较简单。...
分类:
其他好文 时间:
2015-01-23 20:12:31
阅读次数:
170
编译器最基本的功能就是把高级语言编写的代码转化为机器指令(就是01串),从这个角度来说它本质上是个转换过程。经典的编译过程主要包括:
词法分析(Lexical Analysis)
词法分析就是从输入代码中识别出各种记号(token),例如对于C语言我们就需要知道if,else等是语言的关键字,myvar是个标识,而123myvar不能被识别为一个标识。负责实现词法分析的模块有时也称为s...
分类:
其他好文 时间:
2015-01-23 14:43:25
阅读次数:
216
0、前言
最近项目的流程逐渐清晰,但是很多关键性的技术没有掌握,也只能一步一步摸索。
由于要做基于数据流分析的静态代码分析,所以前端的工作如:词法分析、语法分析必不可少。Yacc和Lex什么的就不再考虑了,查了一天的资料,发现两款比较适合,一款是Java下的ANTLR,另一款是专门做PHP AST生成的PHP-Parser。
ANTLR是编译原理领域比较著名的工具了,相对于Yacc和Lex,...
分类:
Web程序 时间:
2015-01-22 23:24:55
阅读次数:
2784