gnu gawk1.01源码分析

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()解释结构体,实现程序的处理。
很有意思,写这些代码的是牛人。

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/87734038
GNU
今日推荐