正则表达式几乎每个程序员都会用到,对于这么常见的一个语言,有没有想过怎么去实现一个呢?乍想一下,也许觉得困难,实际上实现一个正则表达式的引擎并没有想像中的复杂,《编译原理》一书中有一章专门讲解了怎么基于状态机来构建基本的正则表达式引擎,讲这个初衷是为词法分析服务,不过书里的东西相对偏理论了些,实现起...
分类:
其他好文 时间:
2014-05-17 22:50:19
阅读次数:
981
sql请求发送到server端,需要经过解析器生成内部的数据结构对象,以方便进行优化和生成执行计划。解析器主要做了两件事情,词法分析和语法分析。词法和语法分析:mysql使用lex词法分析器,yacc语法分析器进行分析,最后保存到lex对象结构中。例如:
select id, name fr...
分类:
数据库 时间:
2014-05-16 02:57:33
阅读次数:
634
本文翻译自\javacc-5.0\doc\lookahead.html章节。
上文:http://blog.csdn.net/chaofanwei/article/details/25541065
1、LOOKAHEAD是什么
lookahead就是当语法分析器从词法分析器里取token时,需要取多少个才能让分析器正确的走下去。
例一
void Input() :...
分类:
编程语言 时间:
2014-05-12 23:19:21
阅读次数:
679
1、前序
真是书到用时方恨少啊,在大学的时候,虽然学过编译原理,但当时真是不懂啊,只是为了应付考试,死记硬背了一点点。现在呢,由于工作上的需要,不得不弥补一下啊。 这两天把编译原理的书又看了一遍,其实也就是主要看了文法,词法分析,语法分析而已,为了备忘,赶紧先记一下吧。
2、定义
词法分析,就是把源码中的一行行代码按照事先规定好的格式分隔成一个个单词符号(to...
分类:
编程语言 时间:
2014-05-11 21:09:58
阅读次数:
464
依据上述转换图,写出直接转向代码:
//============================================================================
// Name : Comlier.cpp
// Author : vit
// Version :
// Copyright : Your copyright not...
分类:
其他好文 时间:
2014-05-09 22:13:26
阅读次数:
295
1,符号之间的空白被忽略符号中间不能嵌入空白2,词法分析中的贪心法a---b 和 a--
-b相同和 a- --b不同1a=b/*p //根据贪心法 /*被解释成 注释符,便不再往下读,直到匹配 */1a=b/ *p//*号优先级大于 / 故为b除以
p所指向的值根据编程规范,方便阅读,减少出错的可...
分类:
其他好文 时间:
2014-05-04 10:46:38
阅读次数:
255
最近在看DSL的东西,对于外部DSL,写一个解释器是必不可少的。我试图归纳一下我学到的,以写一个解释器为目标,讲一下如果来实现一个可用的解释器。一个解释器通常可以分为一下几个阶段:
词法分析(Lexer) 语法分析(Parser, BNF, CFG, AST) 语义分析(AST的处理, annota...
分类:
其他好文 时间:
2014-04-30 00:39:01
阅读次数:
466