oz grep c原始碼閱讀有感想

2021-10-04 02:23:42 字數 877 閱讀 6038

讀懂這個,基本這個程式原來不明白的地方都明白了。快速的瀏覽程式,把一些細微的地方聯絡起來,真是爽呀。

比如,在函式中

re_exec(char *lp)

{register char c;

register char *ep = 0;

register char *ap = nfa;

bol = lp;

bopat[0] = 0;

bopat[1] = 0;

//bopat[1..9]好象沒有用到,為什麼進行定義呢?

//原來它們是在pmatch()函式中使用了。

bopat[2] = 0;

bopat[3] = 0;

bopat[4] = 0;

bopat[5] = 0;

bopat[6] = 0;

bopat[7] = 0;

bopat[8] = 0;

bopat[9] = 0;

當時我在re_exec函式中,只看到對bopat[0]的使用,而bopat[1]等則沒使用就提了問題?

我理解時,只是侷限在乙個函式re_exec中,其實,bopat是全域性變數,在pmatch()函式中,有對bopat[1..9]的使用。這些元素用於儲存

(ab)(ac)(ad)\1\2\3

中\1儲存bopat[1]中

等。因此 ,要跨越函式來理解。

這個grep的實現終於理解了,讀完後,感覺作者寫得就是巧妙。寫得通俗易懂。我發現bsd的風格和gnu的風格是很不同的。bsd提倡簡明,真想再讀一些bsd相關的原始碼。

不過,我的英語不好,現在只能找到gnu的原始碼。

而gnu的原始碼呢,那個sed1.8中的正規表示式把我難住了,而awk1.01的原始碼呢,也一樣難懂。真是感覺頭痛。

AQS原始碼閱讀感想

1.aqs核心原理 aqs擁有變數state,通過cas設定state得值是否成功判斷是否獲得鎖,原始碼如下 compareandsetstate c,nextc protected final boolean compareandsetstate int expect,int update 獲得鎖...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...