ruby0.49 regex.c源码分析

ruby0.49 regex.c源码分析
网上买个日本人的二手显示器,保护眼睛吧。安装好显示器就开始读源码。
看regex.c,因为可以单独进行测试,先加上几句:
#define test 1
#include<stdio.h>
#include<malloc.h>
进行编译时,报错,说xmalloc,xrealloc等函数找不到,网上也找不到资料,后来,记起在awk还是sed的源码中,是可以编译成功的。具体如何改的忘记了。
一狠心,不管三七二十一了,先把xmalloc中的x去掉,改为malloc,然后再编译,果然少了错误,同样再改xrealloc。
编译完了,就读main函数,其实,这个函数也写得头痛。

不过,因为编译时,虽然报了不少警告,但好歹生成了可执行文件,于是把可执行文件先执行一次。
gcc regex.c -o my_regex
./my_regex
尝试输入,分析输出结果。读起来就有效多了。
作者先把正则表达式进行编译,结果存储起来,再进行优化编译,用优化后的结果去进行匹配。
后面来有个可以打印编译结果的函数,也进行了调用。
print_buf(buf)
加起来后,就错误很多了,再把错误改掉,再执行,居然报内存段错误。仔细分析,发现原来,print_buf的函数是个指针,但在main()函数中,buf不是指针,于是取地址,调用时,改为:
print_buf(&buf)
哈哈,就能执行成功了。真爽。
不过,打印了出buf一堆结果,一堆数字,不太好看。


 

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/86022813