gnu gawk1.01源码分析

165 篇文章 0 订阅
107 篇文章 1 订阅

gnu gawk1.01源码分析
前段时间为了分析dfa实现正则表达式的源码,费尽心思。于是又转而读gawk的源码,这次发现竟然顺畅很多了,现在有一个关键的函数看不懂:interpret()
程序把 awk -f mm.awk file1 file2 file3
中mm.awk文件中的源码读入,进行解析后,存储一个变量expression_value

如果有begin_block块,就用interpret()执行
再找出begin_block,end_block
对file1,file2,file3进行循环处理
    先打开文件
    调inrec()打开文件,并按rs读入一个记录,并用fs拆开,存储相关变量中
    调interpret()进行解析,再用inrec读,直到处理完文件
    再关闭文件
全部文件处理完了,再执行end_block块,也是用的interpret()
这次读完awk1.c感觉很顺畅。这个代码比regex.c好读多了。
作者在awk.h中定义一个超级复杂的结构体,通过 awk.y把程序指令存储到结构体中,再用interpret()解释结构体,实现程序的处理。
很有意思,写这些代码的是牛人。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值