當爲特定語言創建編譯器時,開發編譯器的人是否定義了語言,它的命令從頭開始就好像語言從不存在一樣(這看起來不真實)?或者有沒有辦法使用以前的編譯器?或者他們怎麼做呢?編譯器是如何創建的
1
A
回答
0
這一切都取決於語言。如果語言不存在(並且記住一開始沒有),那麼它當然必須在編譯器之前進行設計。但是,如果您只想對現有語言進行更改,那麼採用現有編譯器並進行所需的更改可能會更容易。
我個人爲little languages編制了一些編譯器,我想到了我自己,並從頭創建了編譯器。有時使用諸如lex和Yacc之類的工具,有時通過手工編碼。
3
0
語言的評估自計算機誕生以來就開始了,第一個優化編譯器出現在20世紀60年代左右。
對你的問題最簡單的回答是,語言設計首先出現,然後編譯器開發人員開發編譯器遵循標準。然後語言設計者從用戶社區獲得反饋,並對語言標準進行更改,編譯器開發人員再次處理這個新標準。
compiler support for C++0x standard
通常情況下,編譯器開發者開發新的語言功能只支持使用編譯器已經支持功能。
2
我猜你是假設編譯器是寫在它編譯相同的語言。不是這種情況。該過程被稱爲引導。第一個C#編譯器是用C++編寫的。第一個C++編譯器用C編寫。第一個C編譯器用B編寫。第一個B編譯器用BCPL編寫。除此之外,它變得模糊,古老的歷史和所有這一切。這最終會回到有人用一個切換開關將程序輸入到一臺機器中。
解決你的問題的第一部分:是的。沒有人對語言的語法有很強的定義,沒有人着手編寫編譯器。這可以在紙上計算出來。
相關問題
- 1. 單 - 編譯器爲服務,如何創建編譯
- 2. 我如何着手在Eclipse中創建編譯器/編輯器?
- 3. 編譯器如何編譯編譯器?
- 4. 如何重新創建編譯類?
- 5. 如何爲我的編譯器創建一個gui?
- 6. 如何用Flex/Bison創建真正的編譯器?
- 7. 如何創建簡單的翻譯器
- 8. 編譯器不能創建可執行
- 9. Java編譯器不創建.jar文件
- 10. 創建閉包編譯器extern
- 11. C#編譯器創建ref類
- 12. 創建(使用MSVC編譯器)
- 13. 是編譯器自動創建的返回變量嗎?
- 14. Java編譯器創建的$ filename.class文件是什麼?
- 15. 什麼是C(或ML)在創建編譯器中的角色?
- 16. 編譯器如何構建語法樹?
- 17. 如何爲SBT創建編譯器操作
- 18. 幾個OpenMP編譯器如何創建線程?
- 19. 如何爲F#編譯器(Fsc.exe)創建快捷方式?
- 20. 如何在C#中創建Hex文件編譯器
- 21. 如何使用Shell腳本爲c編譯器創建別名?
- 22. 如何創建反應和手寫筆編譯器?
- 23. 如何在C++中編譯編譯器?
- 24. JIT編譯器 - 如何開始編寫自己的編譯器?
- 25. 棧是由編譯器或OS /建築
- 26. 編譯與創建字典
- 27. 創建在編譯時
- 28. 編譯Box2D時創建libBox2D.a?
- 29. 編譯代碼 - 創建IDE
- 30. C++創建和編譯類
我沒有假設,我不是在談論爲新語言創建第一個編譯器,我正在討論爲已經存在的語言創建編譯器。 –
然後我不知道你在問什麼。特別是「這似乎不真實」的評論令人困惑。 –
@Sameh,所以你在談論一個「已有的語言」 *和*在同一時間「定義language..as如果根本不存在的語言」:似乎是一個矛盾,使問題很難做到公正對待。 – inger