Programming 板


LINE

各位大大安安,第一次發文,如有缺失還請多多包涵 小弟目前是大二的學生,學過的語言包含 C/C++ Java Python 然後有自學 過一點組語,最近想給自己一個挑戰就是寫一個簡單的compiler,爬過文之 後也有去圖書館翻了幾本compiler實作的書(像是用Java實作compiler等) ,可是程度感覺差太多而且書又厚又長實在啃不下去,網路上也有翻過一些簡單 的用Javascript寫基礎compiler的小文章,可是看完之後實在沒甚麼感覺 所以來這邊發問希望各位大大可以給點建議看要從哪裡切入,看最基礎入門要從哪 裡開始會比較好,希望有大大可以分享一點心得或是指點個方向,感恩大家 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.121.228
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Programming/M.1509289818.A.3C9.html
1F:推 alan23273850: 先修compiler課程?113應該有開吧 1.168.89.86 10/30 00:12
2F:→ chuegou: 語法分析吧? 1.160.123.161 10/30 00:13
3F:推 eddie55020: https://goo.gl/3RvQDq140.117.181.107 10/30 08:53
4F:→ eddie55020: 這堂課還不錯會寫一個簡單的瀏覽器(ht140.117.181.107 10/30 08:53
5F:→ eddie55020: ml,js)140.117.181.107 10/30 08:53
6F:→ eddie55020: 基本的語法分析,詞法分析也講的不會140.117.181.107 10/30 08:53
7F:→ eddie55020: 太難140.117.181.107 10/30 08:53
8F:→ eddie55020: 對了這堂課是用Python140.117.181.107 10/30 08:55
9F:→ bcew: nand2tetris的compiler部分可練習,不難也 223.139.157.73 10/30 12:29
10F:推 james732: 我在天瓏買過簡體書,實作C subset的co 223.136.27.207 10/30 15:19
11F:→ james732: mpiler 223.136.27.207 10/30 15:19
12F:→ Epoch0404: 回alan大 學校是有開不過是大三的課 然140.113.121.228 10/30 16:16
13F:→ Epoch0404: 然後卡我現在的必修140.113.121.228 10/30 16:16
14F:推 Neisseria: 先寫四則運算直譯器看看,有感覺後 118.161.40.212 10/30 18:39
15F:→ Neisseria: 再慢慢加入其他功能,比較會有具體感覺 118.161.40.212 10/30 18:40
16F:→ Neisseria: 可以參考 bc(1) 的語法去寫 118.161.40.212 10/30 18:40
17F:→ alan23273850: 那我覺得可以先跟學長姐打聽一下貴 123.193.38.80 10/30 19:51
18F:→ alan23273850: 校的compiler教得好不好,如果教得 123.193.38.80 10/30 19:51
19F:→ alan23273850: 特好,那到大三再學就可以了,一個 123.193.38.80 10/30 19:51
20F:→ alan23273850: 教得好的老師其實不需要讓同學預習 123.193.38.80 10/30 19:52
21F:→ alan23273850: 的,到時候你會覺得花那麼多時間自 123.193.38.80 10/30 19:52
22F:→ alan23273850: 學CP值特低,因為老師一點就通;如 123.193.38.80 10/30 19:52
23F:→ alan23273850: 果教得很爛,那就趕快趁現在自修, 123.193.38.80 10/30 19:52
24F:→ alan23273850: 然後到時候修課去電其他人,因為反 123.193.38.80 10/30 19:52
25F:→ alan23273850: 正老師教了也是聽不懂。 123.193.38.80 10/30 19:52
26F:→ alan23273850: 不過我倒是要提醒compiler的內容對 123.193.38.80 10/30 19:53
27F:→ alan23273850: 於一個正常學生是前所未有的概念, 123.193.38.80 10/30 19:53
28F:→ alan23273850: 所以並不太適合自修,但可以試試。 123.193.38.80 10/30 19:53
29F:→ alan23273850: 如果想利用時間充實自己,也不一定 123.193.38.80 10/30 19:53
30F:→ alan23273850: 要寫compiler阿,練習當個駭客還是 123.193.38.80 10/30 19:53
31F:→ alan23273850: 驗證碼辨識什麼的都很好。 123.193.38.80 10/30 19:53
32F:→ jimfan: 我用bison、flex寫過interpreter都覺得頭 14.199.97.157 11/03 13:05
33F:→ jimfan: 疼了,compiler還要輸出機器碼,應該特級 14.199.97.157 11/03 13:06
34F:→ jimfan: 困難吧 14.199.97.157 11/03 13:06
35F:→ bcew: 不考慮最佳化其實只是做苦工而已啦 223.140.195.48 11/03 16:23
36F:→ bcew: 先寫個scanner把文字轉token,最簡單 223.140.195.48 11/03 16:26
37F:→ bcew: 用遞迴的方式把所有token串成parse tree 223.140.195.48 11/03 16:28
38F:→ bcew: 最後遍歷tree,所有基本sub-tree轉組語而已 223.140.195.48 11/03 16:33
39F:→ bcew: 例如c=a+b就是var=exp,這exp又是var+var 223.140.195.48 11/03 16:41
40F:→ bcew: var+var轉成mov r1,[a]; mov r2,[b]; add r1 223.140.195.48 11/03 16:44
41F:→ bcew: ,r2; mov [tmp_01], r1; 再來換做c=exp 223.140.195.48 11/03 16:50
42F:→ bcew: mov r1, [tmp_01]; mov [c], r1;這樣就做完 223.140.195.48 11/03 16:52
43F:→ bcew: 機械碼和組語是一對一也很好做的 223.140.195.48 11/03 16:55
44F:推 lc85301: 推nand2tetris ,手爆就能寫完 182.158.95.66 11/05 22:41
45F:→ fayhong: 最近看到一個語言:Pyret,跑在 node.js111.241.215.194 11/08 09:21
46F:→ fayhong: 換句話說,是一個可以 compile 成 js 的111.241.215.194 11/08 09:21
47F:→ fayhong: 語言,你可以把他們的 source 抓回來研究111.241.215.194 11/08 09:21
48F:推 fayhong: 換個角度想,你要不要先學著寫直譯器?111.241.215.165 11/13 10:57
49F:→ fayhong: interpreter,設計一個簡單點的語言來做111.241.215.165 11/13 10:57
50F:推 NoyVaughty: 113楊武開的編譯器風評不錯 140.113.69.32 11/17 19:08
51F:推 hijkxyzuw: scheme 和 sicp (X140.116.102.187 02/24 23:48
52F:→ xcycl: 看一下程式語言理論還有程式語意,再從一 92.40.249.78 04/28 19:26
53F:→ xcycl: 個 while 語言瞭解怎麼拆解問題比較容易 92.40.249.78 04/28 19:26
54F:推 xcycl: AST 的分析包括 tokenizer 用現代的函數式 92.40.249.78 04/28 19:28
55F:→ xcycl: 編程,通常在一兩百行的程式碼就可以完結。 92.40.249.78 04/28 19:28
56F:→ xcycl: 用 yacc& lex 實作浪費生命... 92.40.249.78 04/28 19:28
57F:推 xcycl: https://wiki.haskell.org/Parsing_a_simpl 92.40.249.78 04/28 19:35
58F:→ xcycl: e_imperative_language 92.40.249.78 04/28 19:35







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP