在通常的情况下,我们只关心文本中的一部分信息,但是为了编写词法和语法分析程序,又不得不将所有的结构信息全部描写出来,例如:我们仅仅关心C 源文档中的类名字信息,而不关心类是否有成员变量,是否有成员函数以及是否有其它的一些C 内容。这就是Lex和Yacc的错误(error)处理的一个应用:)我非常喜欢:) 阅读全文>
发表于 @ 2007年03月21日 21:28:00|评论(loading...)|编辑|收藏
在这一章里面将要涉及到处理C/C++的包含宏的解析。也就是说要从一大串C/C++ 包含文件的声明中提取出文件名,以及相互依赖关系等等。实际上在这一章里面 使用的Lex和Yacc技术也是非常重要的,这些都会在本章中进行详细讲解。阅读全文>
发表于 @ 2006年10月05日 14:00:00|评论(loading...)|编辑|收藏
经过前面章节的准备,到目前为止一个完整的C++应用框架已经完整的搭建 起来了。现在的事情就是考虑如何利用这个框架来实现自己的目的功能程序了。在这一章并不涉及到实际的开发而是先学习一下简单的理论知识。 本章将会根据我的个人开发经验来说明一下开发Lex和Yacc程序的一般开发步骤,这里的内容也会随着后续的开发逐渐的完善起来,当在后续的开发 中遇到不明白的地方可以回到这一章来看一看,也许就明白了:)阅读全文>
发表于 @ 2006年10月03日 12:34:00|评论(loading...)|编辑|收藏
写这一章的目的就是为了能够提供一个能够使用C++特色的Lex和Yacc框架,这个框架同前一章的目的一样,也是仅仅为了能够提供一个什么也不作的框架程序,当时有点不同的就是:这个新的框架使用了C++语法,能够使用所有的C++特色,包括STL的强劲算法和容器,还有各式各样的C++库。采用C++的目的就是为了能够快速的编码来完 成自己需要完成的任务。阅读全文>
发表于 @ 2006年09月26日 22:10:00|评论(loading...)|编辑|收藏
在本章中,将会首先给出一个最基本的lex和yacc联合使用的框架,这个基本框架最 主要的特点就是能够正确的被编译。在我学习lex和yacc的过程中经历了无数次的痛 苦折磨,我发现一个一开始足够简单而且能够被正确编译的例子往往能够使学习者 增加学习的兴趣和信心。因此我的所有的文章都尽可能的采用这种方式进行描述 。我写这些文档的最大的愿望就是希望能够减少新手学习的痛苦。希望自己能够做 到这一点!阅读全文>
发表于 @ 2006年08月27日 17:45:00|评论(loading...)|编辑|收藏
正则表达式在Unix/Liunx系统中起着非常重要的作用,在很大一部分的程序中都使用了正则表达式,可以这么说:“在Unix/Linux系统中,如果不懂正则表达式就不算会使用该系统”。本文中使用的Lex和Yacc都是基于正则表达式的应用,因此有必要用一篇文档的形式详细说明在Lex和Yacc中使用的正则表达式为何物!
阅读全文>
发表于 @ 2006年07月05日 08:36:00|评论(loading...)|编辑|收藏
在开发程序的过程中经常会遇到文本解析的问题,例如:解析C语言源程序,编写脚本引擎等等,解决这种文本解析的方法有很多,一种方法就是自己手动用C或者C++直接编写解析程序,这对于简单格式的文本信息来说,不会是什么问题,但是对于稍微复杂一点的文本信息的解析来说,手工编写解析器将会是一件漫长痛苦而容易出错的事情。本系列文档就是专门用来由浅入深的介绍两个有名的Unix工具Lex和Yacc,并会一步一步的详细解释如何用这两个工具来实现我们想要的任何功能的解析程序,为了方便理解和应用,我会在该系列的文章中尽可能的采用具体可行的实例来加以阐释,而且这种实例都是尽可能的和具体的系统平台无关的,因此我采用命令行程序作为我们的解析程序的最终结果。本文第一篇将会讲解该开发环境的设置问题。阅读全文>
发表于 @ 2006年07月04日 10:07:00|评论(loading...)|编辑|收藏