以前写过两版算术表达式解析代码,但都是基于栈结构或者树模型的,并不是通用的算法。其实算术表达式解析是最基本的词法分析算法,直到我看了《自制编程语言》里面介绍的递归向下分析法,才明白这种问题的终极解决方案是使用词法分析和语法分析。。//用于词法定界的头文件 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
1、问题描述一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣。当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析、语法解析、权限检查、查询优化、SQL执行等一系列的步骤,简短的篇幅是绝对无能为力的。因此,本文挑选了其中的部分内容,也...
分类:
数据库 时间:
2015-02-04 14:28:00
阅读次数:
249
一、前言Scala程序使用的是Unicode的BMP字符集(wiki:BMP字符集),就目前而言Unicode supplement字符集并不支持。这一章从scala模型和xml模型定义scala的语法分析。如果没有特别提到,默认指的是scala模型,并且规定字符是ASCII码的\u0000到\u0...
分类:
其他好文 时间:
2015-02-01 21:53:09
阅读次数:
553
自动生成的词法分析器跟之前讲的图转移算法是类似的,因为是自动生成,为了把整个流程形式化,需要用另外一个数学工具--有限状态自动机。 从数学上讲,有限状态自动机是什么概念呢? 输入一个字符串,如果字符串能够接受,则输出Yes,否则输出No。有限状态自动机是一个五元组,M=(S, Σ, ...
分类:
其他好文 时间:
2015-02-01 14:48:50
阅读次数:
213
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段...
分类:
编程语言 时间:
2015-01-30 19:37:17
阅读次数:
164
出处:http://www.cnblogs.com/ma6174/archive/2013/04/15/3022548.html记录下简单说,闭包就是根据不同的配置信息得到不同的结果再来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。...
分类:
编程语言 时间:
2015-01-27 21:34:16
阅读次数:
141
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