自己寫編譯器視頻
① 自己寫編譯器怎麼寫,我想為中國程序員做個編譯C語言的編譯器。
首先做這個東西的意義並不大,如果是想學習的話,看看這本書Modern Compiler by Andrew W. Appel
② 如何看待《自己動手寫編譯器,鏈接器》一書大量抄襲開源編譯器 TCC
對於編譯器來說,核心是定義的語言,從這個意義上講,SCC編譯器屬於原創內容當然就談上上抄襲,人家有這個版權聲明也算合理,不過似乎沒什麼用,因為源代碼可以公開下載,實事上就是開源了。
其實我們讀者更關心一本書對我們自身是否有用,聽朋友說現在編譯器開發工程師起薪20k以上,要真能學會這門技術對我來說還是很有誘惑力的,畢竟國內真正寫過完整編譯器,鏈接器的人還是鳳毛麟角,能掌握這門技術還是很吃香的。
③ java的編譯器怎麼用
首先,Java編譯之後不是生成.exe文件,編譯之後只有.class文件,也就是位元組碼文件,所以你運行它只是用Java虛擬機去解釋執行,而不是操作系統直接執行,換句話說,它不是DOS程序,所以沒辦法直接像C語言編譯之後的那樣。
其次如果你把JDK的安裝目錄下的bin文件夾的路徑添加到Path環境變數的話,那麼進入命令提示符(運行對話框里輸入cmd就可以進入命令提示符),輸入:「java【空格】 類名」就可以看到類似C語言運行的效果,當然,那個類要有main方法,還有就是你輸入:「java【空格】 類名」之前,還需要在命令提示符里先進入到.class文件所在的路徑,進入的方法是輸入「cd 路徑」
再次,NetBean是個集成開發工具,不是編譯器,但是NetBean里有編譯器,它有個窗口類似於DOS窗口的,在裡面可以看到輸出,也以自己輸入命令、參數。
最後,如果學習Java的話,還是建議你系統地學習,很多入門書籍、入門視頻都有教編譯器怎麼用,怎麼運行Java程序等等各種知識的。
④ 如何編寫自己的編譯器
我暈,你們老師真NB,你學的什麼語言啊?是c嗎?上來就讓你做個編譯器,你們老師吃錯葯了吧?
我大學同學畢業設計才是做個編譯器,那會那倆人合作做的,還都是我們系公認的c最強的兩個,合作還做了半年,你認為大一剛上來就做這個?!
⑤ 怎樣去寫一個編譯器(用C語言寫C語言編譯器),需要哪些知識做鋪墊,可以給一下相關網站和書籍的推薦嗎
寫編譯器重點就是設計並實現一些數據結構和演算法,語言特點太多的話,代碼寫起來不容易,建議你找一個小語言嘗試下,不要一開始就去嘗試成熟語言。否則你會在寫完語法分析程序以後,遭遇到很大的困難。多數人都是在寫語義分析程序的時候,突然發現自己設計的數據結構很爛,後邊越寫越要命。
如果你想入門編譯器的話,那麼可以看《編譯原理與實踐》,整本書先將編譯器理論,然後後邊教你一步步實現c-miuns(c的子集)的編譯器,包括lex,yacc,都在幾千行代碼左右。這本書講的比較簡單易懂一點
也可以學學斯坦福大學的編譯器設計公開課(aiken設計了一個叫cool的語言,專門用來教人寫編譯器),課程地址上面有人給了:Compilers。這門課以前有個實驗環境(據說已經給了,我以前寫的時候還是用的網上一個不完整的實驗環境),把和編譯器知識無關的內容都給你寫好了,你只需要在固定的地方填上你的內容就可以寫出你的編譯器(不要覺得很簡單哦,人家的代碼寫的很精巧的,讀完就發現寫個好編譯器還是很費腦子的),另外,這個實驗環境有個特點,就是在每一步都提供標准程序做對比,你可以在寫完一部分以後就同標准程序對比,及時發現錯誤。這種方式為寫編譯器又提供了很多幫助
先找個小的,慢慢研究,弄懂了整體的結構再說
⑥ 我想用JAVA做個簡易編譯器,說說思路,或者有沒有現成的代碼JAVAC的代碼有嗎
要寫編譯器?自己開發語言?很牛X,先贊一個!
自己寫編譯器,原理其實不難,就那麼點東西。找一個編譯原理看明白就OK了,詞法、語法、語義、語境。
這些東西用一些自動機,圖靈機,範式,正規之類的就可以搞定。分析嘛,什麼逆波蘭,樹形,一共也沒幾種的。
但最難做的是優化,還有機器代碼生成這二部分。
優化怎麼做?你的中間代碼放哪?先優化還是先生成中間代碼?
機器代碼怎麼搞?用匯編?還是直接和機器特性相關?
反正這二點我是暈,雖然原理還是那點東西,但真搞起來,我一點思路都沒有。。。
國內寫編譯器的有,但都不是很牛X。
想要寫好,還得多看E文資料。
加油吧。
⑦ 怎樣去寫一個編譯器(用C語言寫C語言編譯器),需
這個需要考慮到很多的問題 各種錯誤的類型 以及可能出現的情況
這個可以先去看看c編譯器的原理(最好是源代碼) 然後可以自己試著 編寫其中一部分實現的原理 如果是簡單的查錯 也要分析錯誤的類型等 修正方法
⑧ 新手如何學習編程
熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:
1、語法。
2、基礎理論(數學、數據結構、演算法等)。
3、設計方法(編程原則、設計模式、框架設計等)。
4、庫(核心、基礎、UI、擴展、游戲引擎等)。
5、計算機相關(操作系統、網路、圖形學等)。
6、領域知識(游戲設計、網站設計等)。
7、開發工具(編輯器、IDE、自動部署等)。
8、項目管理(進度管理、分工協作、Bug管理、版本控制等)。
最普遍也是最重要的能力:創造力。努力分析並理解好做什麼以及怎麼做。要知道上面那些東西一開始都是不存在的。
具體方法包括:
1、快速閱讀入門教程和書籍,適合學習語言和基礎庫。比如我學Java讀的《Java編程思想》,練習題做過一點,然後學ActionScript就沒讀過書,只讀過Adobe官方文檔《ActionScript 3.0編程》。
2、閱讀庫的文檔、實例、源碼。比如Flash、Flex開發,熟悉官方API很重要,很多細節要具體使用時才注意到,這時候最好做個筆記,雖然我從沒看過我的筆記。
3、做一個自己感興趣或熟悉的小項目,比如我就以黑白棋游戲作為多個語言的試水項目,一樣的邏輯,便於把關注點放在語言特點上。
4、自己動手豐衣足食。廚師有菜譜,程序員可沒菜譜。比如我做游戲,最關鍵的游戲編程知識全部是動手學出來的,很少有專門針對某個業務領域(如游戲)的編程書籍,要麼是入門書,要麼是模式書(如演算法)、理論書(圖形學),很少有書籍教你如何開發一個45度角地圖系統加編輯器的,全靠自己思考,以及看前人的代碼,需要時找些網路資料。關鍵是,可以培養最重要的創造力。
對於演算法和設計模式,可以研讀下,但是關鍵還是靠平時如何使用了。新手勉強不來的。
項目管理方面的,就得靠工作經驗了,多思考多提意見不要只走流程。
⑨ 如何自己實現一個編譯器
1、編譯器有很多種,每一種的使用方式不盡相同。常用編譯器:
Visual C++
GNU C++
Inter C++
Sun C++
clang
2、一般編譯過程:源文件→預處理→編譯→匯編→鏈接→可執行文件
下面以GCC示例:
預處理(Pre-Processing):根據預處理命令(#開頭)修改源文件
# gcc -o hello.i -E hello.c or # cpp -o hello.i hello.c
編譯(Compiling):語法檢查,並將源文件翻譯成匯編文件
# gcc -o hello.s -S hello.i or # cc1 -o hello.s hello.i
匯編(Assembling):將匯編文件轉換為目標文件(二進制)
# gcc -o hello.o -c hello.s or # as -o hello.o hello.s
鏈接(Linking):編址和符號鏈接,生成可執行文件
# gcc -o hello hello.o or # ld -o hello hello.o
⑩ 如何寫一個簡單的編譯器
因為我這里都只寫了 Parser ,所以就只談談第一次寫 Parser 的建議。
1. 扔掉龍書虎書鯨魚書。這些書都有一個問題,就是在自己手寫完一個自己的 Parser 之前,書上寫的那些鬼東西完全都不知道該怎麼用,用在哪裡。
2. 大膽地擼。不要在意性能啊,擴展性,復用啊這些鬼東西,先把東西做出來再說。
3. 記住代碼只不過是格式化文本。不要覺得代碼是什麼復雜的東西,它跟 Json / XML 這些東西沒啥太大區別。Parser 的意義就是把人能看懂的格式化數據編程計算機能看懂的格式數據。