ruby0 49 regex c原始碼分析

2021-09-07 20:21:48 字數 762 閱讀 5826

ruby0.49 regex.c原始碼分析

網上買個日本人的二手顯示器,保護眼睛吧。安裝好顯示器就開始讀原始碼。

看regex.c,因為可以單獨進行測試,先加上幾句:

#define test 1

#include

#include

進行編譯時,報錯,說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一堆結果,一堆數字,不太好看。

ruby 0 49原始碼分析

今天想想,讀讀ruby0.49的原始碼。用c寫東西,那是太慢了。真要幹活,還是用perl或者ruby.現在時間充足,就相看看ruby0.49。收到了王亞剛寫的gcc原始碼分析的書,他的版本太高,感覺還是讀最古老的版本較划算。量太大了,這何年何月才能看完呢。wget tar zxvf ruby 0.4...

ruby0 49原始碼分析 array c

ruby0.49原始碼分析 array.c 今天讀ruby0.49,感覺讀 的速度越來越快了。大腦好象開竅了。先讀makefile,根據基編譯順序,從下向上讀。在array.c的上面定義了若干函式,在末尾把函式進行註冊。檔案末尾 有init string 函式 用rb define method 函...

ruby0 49原始碼分析2

ruby0.49原始碼分析2 週末重新打造讀程式的環境。在臥室裡布置了兩台電腦,每台筆記本加個顯示器。一台專門用於讀 另一台,專門用於寫測試程式,並把上網功能去掉。最大限度的保持專注。因為ruby中定義了資料結構,把資料結構的定義抄下來,然後貼在牆面上,就象警察破案一下,準備乙個大的工作板。發現證據...