前一阵子遇到网络通信方面的东西,感觉总结还是十分必要的。这里给出一些新的补充。
本示例采用C++方式。
一、Socket.h 头文件
#ifndef SOCKET_H
#define SOCKET_H
#include
#include
阅读全文>
发表于 @ 2008年02月16日 18:02:00|评论(loading...)|收藏
不想Lex和Yacc系列的最后一篇文章竟如此“难产”,已时隔三个月之久。不由慨叹自由可支
配时间是如此之少,如此岂不谓新时代的“奴隶”~
罢罢罢,闲话少叙,回归正题,本文主要介绍在Windows下如何去使用Lex和Yacc,以作为
本系列文章的终结。阅读全文>
发表于 @ 2007年09月06日 14:21:00|评论(loading...)|收藏
一、序
前面一些系列文章着重介绍了递归语法树在编译理论方面的应用。本文则会介绍另一种
实现方式----堆栈。
堆栈在底层系统有十分广泛的应用,同样也十分擅长处理语法结构,这里通过实际示例
探讨如何构造堆栈完成语法分析。
重要补充:下面是本系列文章全示例代码统一的调试测试环境,另对于lex,yacc文件需
要存储为Unix格式,这一点和Linux,Unix下shell很类似,DOS格式的Shell是不能够被执行
的,同样bison,lex编译DOS格式文件会出错误提示:
Red Hat Linux release 9 (Shrike)
Linux 2.4.20-8
gcc version 3.2.2 20030222
bison (GNU Bison) 1.35
lex version 2.5.4
flex version 2.5.4
阅读全文>
发表于 @ 2007年06月05日 11:08:00|评论(loading...)|收藏
说到这里,也许有人觉得要把这些东西实际应用起来,还没谱,或许很多人觉得工作中很
少能使用到。
本文的主要目的就是为了详细说明下实际的企业应用示例。示例基于《Lex和Yacc应用方
法(五).再识语法树》阅读全文>
发表于 @ 2007年05月28日 16:46:00|评论(loading...)|收藏
没有直观的语法树显示界面,理解前面两篇文章会比较难一些。(语法树的示例见
《Lex和Yacc应用教程(四).语法树的应用》) 其实语法树显示程序在Tom Niemann的
《A Compact Guide to Lex & Yacc》文中已有完整的示例,不过我很不喜欢,也许
是无法适应别人的代码习惯吧,这里针对《Lex和Yacc应用方法(五).再识语法树》,
完全重写了打印语法树的程序代码。我不敢说算法有多高明,起码十分便于理解和掌握。阅读全文>
发表于 @ 2007年05月25日 21:29:00|评论(loading...)|收藏
在《Lex和Yacc应用教程(四).语法树》一文已对语法树有了初步的概念,本文主要目的
是巩固语法树的概念,并做进一步的扩展分析。闲说少说,首先给出完整示例,本例在Redhat Linux 9
下调试通过,可放心使用。
另外系列文章的标题,有的叫“lex和yacc应用方法”,有的叫“lex和yacc应用教程”,
还有的叫“lex和yacc使用教程”等等,概念都是一样的。之所以起这么多名字是便于大家通
过搜索引擎能迅速查到。阅读全文>
发表于 @ 2007年05月25日 21:26:00|评论(loading...)|收藏
不论什么语言,语法结构总是那几种,可以想象任何程序体都可以解释成一棵语法
树,语法树的本质是递归,很显然Yacc文法的核心思想也是递归。本文就通过具体实例,
使用Yacc构建递归的语法树来解决实际问题。
比较遗憾的是,在总结的过程中想表达清楚并不容易,估且三分言传,七分会意吧。
关键在于个人去思考。阅读全文>
发表于 @ 2007年05月21日 10:17:00|评论(loading...)|收藏
早在两个月前就想对Lex和Yacc作系列的阐述,然而工作的事情实在太多,很难抽出空
静下心去总结学习。不觉感慨国内工作环境恶劣,加班是家常便饭,整天基本都是在做
一些简单大量的重复,甚至徒劳无用。
在《初识Lex》一文中主要从入门角度总结了Lex,《再识Lex和Yacc》一文在可以简单
使用Lex情况基础,介绍了Lex和Yacc的算法理论,并说明如何将Lex和Yacc结合起来使
用。
这里我们需要对Lex和Yacc使用方法做进一步研究,以备能理解后面会引入的语法树。
阅读全文>
发表于 @ 2007年05月14日 22:25:00|评论(loading...)|收藏
早在二十世记七十年代之前,编写编译器一直是一个非常费时的工作。但到了1975这
一年这一切却发生了重大转变,首先Stephen C. Johnson Lesk在贝尔实验室完成了
Yacc开发,为了配合yacc更好的协作, Mike Lesk和Eric Schmidt又完成了lex。从
而Lex和yacc成为计算机编译领域的重要理论,而这些工具也极大地简化了编写编译
器的工作。阅读全文>
发表于 @ 2007年03月16日 10:19:00|评论(loading...)|收藏
Lex(Lexical Analyzar 词法分析生成器),Yacc(Yet Another Compiler Compiler
编译器代码生成器)是Unix下十分重要的词法分析,语法分析的工具。经常用于语言分
析,公式编译等广泛领域。遗憾的是网上中文资料介绍不是过于简单,就是跳跃太大,
入门参考意义并不大。本文通过循序渐进的例子,从0开始了解掌握Lex和Yacc的用法。阅读全文>
发表于 @ 2007年03月15日 17:23:00|评论(loading...)|收藏