gnu gawk1.01源码分析 编译

107 篇文章 1 订阅
95 篇文章 1 订阅

前两天看了一段ruby代码,特别是昨天把ruby0.49的代码进行编译,搞了半天,感觉抓不住要领。编译不成功,于是很沮丧。
晚上,就进入sample目录中,看测试代码。把测试代码执行一下,感觉作者确实很不错,最早版本的测试,在2点几的版本中,稍微修改后,居然能执行,也算是不错的了。
ruby0.49的代码才23000行,可看起来,就是摸不着头脑。没有一个整体的框架,不知如何下手。一顿乱翻后。感觉还是太难了。
于是早上就找awk的源码,这次找到了1.0.1的版本代码,代码也少,才9千行。
这个代码就少了,其中处理正则表达式的就占了2000行,先学会正则表达式的使用。想在网上找资料,可很少,大部分都是python里的re包,于是看regex.c发现很好,其中有测试代码,于是加上加上进行编译的宏
#define test
,再进行编译,发现报错,说bcopy,bzero等函数找不到,于是就学这几个函数的使用,在网上找资料,再写测试程序,再修改。再编译,居然成了。
于是测试,但测试结果看不懂。学会了正则表达式的使用,知道几个函数用法,然后把实现算法进行阅读,发现作者没有用递归算法。真是牛人。
大致思路,还是先根据正则串生成内部格式,再去匹配串。但其中的思路就比上次那1000行的正则表达式难多了。
我想把全部的代码编译,在windows下搞的。先是没装bison,装了后,在makefile中,把cc改为gcc
还是报一堆错。无奈去linux下编译,报的错更多。说自定义的malloc和系统自带的有冲突什么的。看来,编译不了。
就三个文件awk1.c,awk2.c,awk3.c,另一个awk.y是bison的,这几个文件真难啃,不知如何下手。
看来,真要复习一下编译原理,还要学学bison,
时间真快,一晃就晚上9点了。我想还是要有一个整体框架,再各个击破。其中awk.h中定义了几个超多成员的struct,真不知这样是干什么?
明天接着看吧,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值