gawk1.1源码分析03

gawk1.1源码分析03
下午把awk1.c,awk2.c等文件翻了一下,其中重点看了awk1.c,对其中流程有一个大致了解,作者没有有getopt进行命令行选项的分析,而是自己手工写的。用
./gawk -d '{print $1}' 
 ./gawk -d '{print $1}' test.1
(3)   0x620644 = left<--(0x62065c PRINT.48)
(4)    0x62062c = left<--(0x620644 Exp_list.39)
(5)     0x61f010 = left<--(0x62062c Field.14)
(6)      (0x61f010 Number 1)
Found a rule:6424180
Statements:6424156
PRINT:6424156
var_type ref:6424108
DATA:6418448
this
Found a rule:6424180
Statements:6424156
PRINT:6424156
var_type ref:6424108
DATA:6418448
ok
就出现了一大串,前面的拷不出来。
可惜我看不懂,因为与bison进行了交互。
于是,硬着头皮向下看,下面好象都是利用了NODE,就像链表一样。
再快速的读了awk.y,其中前面语法分析树的看懂了,但其中还有C语言代码就没看明白了。
《unix编程环境》中有一篇引文《awk----a pattern scanning and processing language》我以为是介绍awk的设计思路,用必应
https://cn.bing.com/search?q=awk+a+pattern+scanning+and+processing+language&qs=n&form=QBLH&sp=-1&pq=awk+a+pattern+scanning+and+processing+language&sc=0-46&sk=&cvid=E0A8C36C0A6345FC80C8F3817ED96762
找到这篇文章,可惜其中介绍的只是如何使用awk。
于是,还是只有读源码了。
作者的那个数据结构相当复杂,以这个数据结构进行编译。因此,只能慢慢啃,但这次是能看懂一点点,而不是全部不懂了。总之,还是有进步的。
休息一会儿,再看吧。

猜你喜欢

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