gnu gawk1 01原始碼分析

2021-09-11 03:15:48 字數 608 閱讀 9023

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()解釋結構體,實現程式的處理。

很有意思,寫這些**的是牛人。

gnu gawk1 01原始碼分析 編譯

gnu gawk1.01原始碼分析 編譯 我不停的在網上找gawk的分析文章,可惜硬是找不到了。前幾天,就把gawk的使用進行系統的複習。基本上對gawk的使用算是入門了。但原理呢?還是看 讀 flex 與bison 後,對awk.y這個檔案基本有了了解,更可喜的是,在一台神舟的筆記本上,把程式編譯...

gawk1 01原始碼分析awk y衝突了

gawk1.01原始碼分析awk.y衝突了 yang desktop v9hs3b6 gawk101 gawk echo hello ok gawk begin hello ok 看到沒,單獨是可以執行的。但把awk指令寫到檔案中,再測試一下,其中t.awk內容如下 yang desktop v9h...

gawk1 01原始碼安裝 續

gawk1.01原始碼安裝 續 今天是個好天氣,我昨天發現有衝突,看了會書,還是不得要領,今天把衝突進行研究,發現 option 1,statements statements option 2,statements statement 選項1和選2只有乙個差異,就是分析語句 時,究竟是選擇 seg...