編譯成功的gawk1.01源碼上傳了

編譯成功的gawk1.01源碼上傳了
世界上最幸福的事,就是把代碼編譯成功了。然後一個屏幕對代碼進行編輯,另一屏幕,進行測試,立即看到效果。太爽了。
今天,我把gawk1.01編譯成功,我開始進行一些簡單的測試,如從內置函數開始。如何測試呢?
yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ./gawk 'BEGIN {print 2+3}'
5
yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ./gawk 'BEGIN {print exp(2);}'
7.38906
^C
yang@DESKTOP-V9HS3B6:~/gawk101/gawk$ ./gawk 'BEGIN {print index("abcd","bc");}'
2
^C
再讀index的源碼,如下:
NODE *
do_index(tree)
NODE *tree;
{
        NODE *s1,*s2;
        register char *p1,*p2;
        register int l1,l2;

        get_two(tree,&s1,&s2);
        p1=s1->stptr;
        p2=s2->stptr;
        l1=s1->stlen;
        l2=s2->stlen;
        while(l1) {
                if(!strncmp(p1,p2,l2))
                        return tmp_number((AWKNUM)(1+s1->stlen-l1));
                l1--;
                p1++;
        }
        return tmp_number(0.0);
}
對那些看不懂的,先略過,如NODE,get_two()函數,反正是得到了兩個值,再進行比較,比較時,用笨辦法,沒有用正則表達式,也沒有用KMP算法,就是笨辦法,逐個的比較。那個while循環辦的事。
我試着把
return tmp_number(0.0);改成
return tmp_number(-1.0);
再編譯,再測試,果然生效了。心情很是高興。
我想,這樣纔是讀代碼呢。一邊讀,一邊對代碼進行修改,這樣來驗證自己的理解,太爽了。前段時間,只是碰個代碼讀,在頭腦中想象,太難了。現在自己可以編譯代碼,可以修改,立即看到修改的效果,太爽了。
今天還試着把修改後的代碼上傳了。發現csdn可以上傳源碼,真是很好。也算,讓其他人少摸索。因爲修改源碼,使之能編譯成功的過程,真是太麻煩了。
可惜,現在真正能閒下心來,讀源碼的人太少了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章