PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 看不太懂這串簡單的程式碼
作者:
zzss2003
(brotherD)
2017-08-15 13:56:21
網址:https://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
網頁一開始的兩個程式碼
左邊:getchar裡面應該已經有一個陣列,且在陣列裡已經預先放置好一連串的資料了對吧?
所以一開始先從陣列裡面拿出第一筆資料D1放進C,如果是EOF就跳出while,如果D1等於
0xFF,則再把D2放到len、D3放進C,接著第二個while則一直發送c(此時在c裡面的值是D3)
,發到len(D2)裡面的值為0為止;如果D1不等於0xFF,則發送D1。
我覺得奇怪的點是,為什麼D1等於0xFF時,要把len(d2)當作條件的變數,然後狂發送D3,
不太懂這邊的意義在哪裡。
右邊:一開始一樣從陣列裡拿出D1放進C,如果是EOF則跳出while,如果D1為alphabet,則
把C add to token(不太懂add to token是什麼意思),接著再把D2放進C,如果D2也是alp-
habet則add to token,直到Dn不為alphabet為止。然後就執行got_token(看不懂這行在幹
嘛),接著不為alphabet的那個Dn也被add to token(為什麼,我一直認為是alphabet的資
料才會被放進token),最後在執行got_token(PUNCT)(不知道PUNCT哪裡來的)。
有請各位前輩解惑一下小弟的疑問,謝謝。
作者: stucode
2017-08-15 14:15:00
左邊的code是在解run-length encoding的資料google一下run-length encoding應該就懂了右邊純粹是某個吃左邊emit資料的parser
作者:
Lipraxde
(Lipraxde)
2017-08-15 16:28:00
左邊是在解壓
作者: stucode
2017-08-15 17:02:00
那是解壓縮的code 0xFF是一個記號 表示下一個getchar()讀到的不是資料本身(字元) 而是資料長度(字元數)然後再下一個才是資料本身 接著用迴圈恢復壓縮前的樣子
繼續閱讀
[問題] 關於編譯器支援C++11
Ori185
Re: [問題]初學指標/函數指標的問題
Lipraxde
Re: [問題]初學指標/函數指標的問題
idleryan
Re: [問題] 請問關於 Rust 跟 C 的速度比較
littleshan
[問題] XML轉Class
li4288
Re: [問題] visual studio 2017無法開啟CPP(已解決)
MOONY135
[問題] visual studio 2017無法開啟CPP(已解決)
st1009
[問題] 請問關於 Rust 跟 C 的速度比較
os653
[問題]初學指標/函數指標的問題
idleryan
Re: [問題] 只能使用邏輯運算子和遞迴的加法
jserv
Links
booklink
Contact Us: admin [ a t ] ucptt.com