寫簡單編譯器
A. 寫編譯器必須要會匯編語言嗎
這種事情從理論層面來說:不一定要與匯編語言有什麼瓜葛。你完全可以讓你的編譯器直接編譯成機器碼。大部分C/C++編譯器(不是所有的)之所以先編譯成匯編語言,是為了解構。從C到匯編的「翻譯」相對容易(都算是抽象語言,有語義的),同時匯編語言的編譯器效率很高,可以生成質量非常高的機器碼。所以兩者結合,可以突出各自的優勢,減少復雜度。
但是如果有必要,當然也可以直接編寫產生機器碼的編譯器,實際上Java/C#這樣的半編譯語言和Js這樣的腳本語言,都沒有先轉換成匯編的這一步。前者是因為強大的虛擬機技術,直接把位元組碼轉換成機器碼執行了,後者是靈活的解釋器,實時把代碼轉換成機器碼執行,而完全沒有「編譯」這一步(當然如果深究的話,出於性能考慮,很多高性能的解釋器也會提前「預編譯」一部分代碼,但這是具體實現,不是宏觀概念)。
B. 怎樣去寫一個編譯器(用C語言寫C語言編譯器),需要哪些知識做鋪墊,可以給一下相關網站和書籍的推薦嗎
寫編譯器重點就是設計並實現一些數據結構和演算法,語言特點太多的話,代碼寫起來不容易,建議你找一個小語言嘗試下,不要一開始就去嘗試成熟語言。否則你會在寫完語法分析程序以後,遭遇到很大的困難。多數人都是在寫語義分析程序的時候,突然發現自己設計的數據結構很爛,後邊越寫越要命。
如果你想入門編譯器的話,那麼可以看《編譯原理與實踐》,整本書先將編譯器理論,然後後邊教你一步步實現c-miuns(c的子集)的編譯器,包括lex,yacc,都在幾千行代碼左右。這本書講的比較簡單易懂一點
也可以學學斯坦福大學的編譯器設計公開課(aiken設計了一個叫cool的語言,專門用來教人寫編譯器),課程地址上面有人給了:Compilers。這門課以前有個實驗環境(據說已經給了,我以前寫的時候還是用的網上一個不完整的實驗環境),把和編譯器知識無關的內容都給你寫好了,你只需要在固定的地方填上你的內容就可以寫出你的編譯器(不要覺得很簡單哦,人家的代碼寫的很精巧的,讀完就發現寫個好編譯器還是很費腦子的),另外,這個實驗環境有個特點,就是在每一步都提供標准程序做對比,你可以在寫完一部分以後就同標准程序對比,及時發現錯誤。這種方式為寫編譯器又提供了很多幫助
先找個小的,慢慢研究,弄懂了整體的結構再說
C. 寫一個編譯器大概多長時間
寫一個簡單的編譯器,很簡單,一個星期夠了,但是,它肯定沒有實用價值。
你懂的,編譯器要把源程序編譯為目標機器語言的,不熟悉機器指令,可以用匯編作為目標代碼。
D. 如何用c#寫文檔編輯器
首先,打開你的開發工具Microsoft visual studio 2005。文件——》新建項目——》項目類型選擇visualc#,模板選擇windows 應用程序,到此我們已經創建好一個window窗體了!
接著修改窗體的屬性,窗體名字修改為EditorForm,窗體的text屬性修改為你要的命名。在工具箱了選擇MenuStrip控制項如圖,把菜單拖到窗體去!
-----------------------------------------------------------------------------------------------------------------------------------------
好了,界面我們已經設計好了,現在我們來實現功能了!首先從工具箱裡面拖一個叫做openFileDialog的控制項,這是一個用於打開文件的對話框來的,把這個拖到窗體,然後點擊一下OpenFileDialog選定此控制項,設置Filter屬性默認文本(*.txt)|*.txt|富文本文件(*.rtf)|*.rtf 。當然以後功能擴充後,可以打開別的文件,例如設置Filter的屬性為括弧里的(資料庫文件(*.dat)|*.dat|圖像文件(*jpg;*bmp;*gif)|*jpg;*bmp;*gif|文本文件(*.txt)|*.txt|所有文件(*.*)|*.*)。(注意,次數是用於打開文件對話框對要打開的文件進行篩選的,我們這里只是做簡單的文本編譯器,所以支持的格式分別是.txt 和.rtf格式的文本),最後雙擊菜單的打開菜單出現
E. 寫代碼的軟體有哪些
寫代碼可以用的軟體有:Webstorm、Vscode、SublimeText、HBuilder、Dreamweaver、notepad++、editplus等。
代碼就是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。代碼設計的原則包括唯一確定性、標准化和通用性、可擴充性與穩定性、便於識別與記憶、力求短小與格式統一以及容易修改等。源代碼是代碼的分支,某種意義上來說,源代碼相當於代碼。現代程序語言中,源代碼可以書籍或磁帶形式出現,但最為常用格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。計算機源代碼最終目的是將人類可讀文本翻譯成為計算機可執行的二進制指令,這種過程叫編譯,它由通過編譯器完成。做前端開發,寫代碼的軟體是必不可少的。主流的前端開發寫代碼軟體有:WebStorm、Vscode、Sublime Text、HBuilder、Dreamweaver、notepad++、editplus等,下面我們一起來看看。
做前端開發,寫代碼的軟體是必不可少的。主流的前端開發寫代碼軟體有:WebStorm、Vscode、Sublime Text、HBuilder、Dreamweaver、notepad++、editplus等,下面我們一起來看看。
1.WebStorm【推薦】
WebStorm 是jetbrains公司旗下一款JavaScript 開發工具。目前已經被廣大中國JS開發者譽為「Web前端開發神器」、「最強大的HTML5編輯器」、「最智能的JavaScript IDE」等。與IntelliJ IDEA同源,繼承了IntelliJ IDEA強大的JS部分的功能。WebStorm的過人在於,商家不斷的更新版本。
2.Visual Studio Code(簡稱:Vscode)【推薦】
Visual Studio Code中文版是微軟推出的帶 GUI 的代碼編輯器,啟動非常快,完全可以用來代替其他文本文件編輯工具。還可以用來做開發,支持各種語言。軟體功能非常強大,界面簡潔明晰、操作方便快捷,設計得很人性化。軟體主要改進了文檔視圖,完善了對 Markdown的支持,新增PHP語法高亮。
3.Sublime Text
Sublime Text是一個代碼編輯器也是HTML和散文先進的文本編輯器。擁有著漂亮的用戶界面和非凡的功能,例如迷你地圖,多選擇,Python的插件,代碼段,等等。完全可自定義鍵綁定,菜單和工具欄。其主要功能包括:拼寫檢查,書簽,完整的Python API,Goto功能,即時項目切換,多選擇,多窗口等等。
4.HBuilder
HBuilder是DCloud推出的專為前端打造的開發工具,具有飛一樣的編碼、最全的語法庫和瀏覽器兼容數據、可以方便的製作手機APP、最保護眼睛的綠柔設計等特點。支持HTML、CSS、JS、PHP的快速開發。通過完整的語法提示和代碼輸入法、代碼塊等,大幅提升HTML、js、css的開發效率。
5.Dreamweaver
Dreamweaver是由Macromedia公司開發的一款所見即所得的網頁編輯器。所見即所得的網頁編輯器的優點有直觀性、使用方便、容易上手。它使用所見即所得的介面,亦有HTML編輯的功能。熟練掌握Dreamweaver軟體的使用,無論是設計師還是工程師,它都能有效提高你的工作效率。
6.Notepad++
Notepad++是一款Windows操作系統下的一套文本編輯器。此軟體是免費軟體,可以免費使用,自帶中文,小巧高效,支持27種編程語言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS 等,Notepad++ 內置支持多達27種語法高亮度顯示。Notepad++除了可以用來製作一般的純文字說明文件,也十分適合編寫計算機程序代碼。
7.Editplus
Editplus是一款由韓國Sangil Kim出品的小巧但是功能非常強大的文字編輯器,擁有無限制的Undo/Redo(撤銷)、英文拼字檢查、自動換行、列數標記、搜尋取代、同時編輯多文件、全屏幕瀏覽功能。除了支持HTML, CSS, PHP, ASP, Perl, C/C++, Java, JavaScript, VBScript的代碼高亮外,還內建完整的HTML和CSS指令功能。
F. 如何學寫一個編譯器後端
書籍請參考編譯原理的龍書,以及flex,bison,llvm的manual。
如何寫我可以給你一個大致的流程,
編譯器由詞法分析器->語法分析器->中間代碼生成器->後端組成。
用C語言寫編譯器一般可以按照以下步驟:
使用flex生成詞法分析器。(flex可以通過自己編寫的描述文件來自動生成詞法分析器)
2.使用bison生成語法分析器。(bison可以通過自己編寫的描述文件來自動生成語法分析器)
3.通過語法分析器得到輸入代碼的語法樹表示。
4.編寫遍歷函數遍歷語法樹生成中間代碼。(這里使用LLVM的中間代碼表示)
5.利用LLVM工具集來編譯執行所得到的中間代碼。