ruby0.49 regex.c源码分析

165 篇文章 0 订阅
21 篇文章 0 订阅

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一堆结果,一堆数字,不太好看。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值