我正在創建一個新的域特定語言。你如何測試一種語言,或者你可以用語言來做什麼(變換,編譯,檢查)。 什麼是學習最佳實踐的好參考或起點?什麼是測試域特定語言的好參考?
回答
這可能與您試圖提問的內容完全無關,但PHP自帶測試腳本,以便任何人都可以測試基本語言功能(變量,如果語句,循環等)是否正常工作。
傳統方法是使用您正在實施的語言引導您的實現。這樣你就可以獲得一個「免費」的大型測試套件(當然是相對的),而且你有強大的動力來解決問題並進行優化。
你可以建立編程語言測試,第一種方式:
- 創建正在創建
- 斷言腳本通過調查其副作用語言的腳本。你可以通過例如用主語言(機器語言)創建以新語言執行腳本的單元測試。
如果您想了解有關如何創建編程語言的更多信息,請參閱「最終ANTLR參考」一書,這是一個很好的起點。
一個非常有用的模式來測試一種新的語言的語法如下:
- 解釋一個腳本,並建立一個AST
- 從AST生成新的語言代碼
- 生成一個從所生成的代碼
- 斷言,這兩個AST結構相同
有時它更AST方便地斷言來自兩個AST的生成代碼是相同的。
建立你的測試,如你建立你的語言:
- 詞彙
- 句法
- 語義
感謝您的建議,並感謝指向ANTLR。 – 2009-08-19 18:40:42
我想劫持其他項目的工作單元測試。例如,如果我知道boost單元測試正在工作,那麼我可以在XYZ新的編譯時操作之後重新運行測試,並確保它們仍然通過。我不確定其他語言有什麼可用,但IMO for C++,boost是最終的編譯器壓力測試。
對於一個新的語言,我會使其受到我的標準評估程序:
- 解決在新的語言項目歐拉問題。
- 構建一個單元測試套件,用於解決針對這些問題編寫的解決方案,並確保編譯的代碼仍然返回正確的答案。
它遠非完美,但它會迫使您構建各種各樣的算法/策略,結果是一個緊湊的驗證測試。如果您在語言規範中進行了更改,則更新解決方案以適應它們並不難。
感謝您的提示。我正在研究一種新的,特定領域的語言,因此沒有確定的編譯器壓力測試。我將不得不創建一個。 還要感謝Project Euler的指針。 – 2009-08-19 18:50:07
沒問題。 PE也會給你非常好的想法,語言擅長表達什麼算法,以及不擅長的語言。 – 2009-08-19 18:58:33
研究的第一件事是unit testing,因爲這是開發者應該從一開始就應該做的事情。事實上,有些人甚至主張在編寫任何實際代碼之前編寫單元測試。
對於大多數流行的語言,如Java,Python等,有很多單元測試框架。 This blog post給出了Javascript的單元測試框架的完整列表。
下一步是瞭解有關lint
程序,該程序檢查代碼庫中的不正確或不清楚的構造。這通常不包含在構建過程中,但是它是測試的重要部分。有C,Javascript和Python等lint程序。
- 1. 什麼是「域特定語言」?
- 2. 什麼是最好的語言來寫硒測試?
- 3. 什麼是動作特定語言(ASL)?
- 4. 什麼是PostgresSQL查詢語言考慮?
- 5. - 什麼是最好的語言開始?
- 6. 域特定語言IDE
- 7. F# - 領域特定語言
- 8. 什麼是語言綁定?
- 9. Python的參考語言:外地定義
- 10. 未定義參考`圓的 'C語言
- 11. 什麼時候應該使用域特定語言?
- 12. 爲什麼Ruby on Rails稱爲域特定語言?
- 13. 創建特定於域的查詢語言的步驟是什麼?
- 14. ABAP單元測試類 - 良好參考
- 15. 什麼是非oo語言的原型單元測試框架?
- 16. 什麼是WinRT語言預測?
- 17. 什麼是好的數據庫模型定義語言?
- 18. 什麼是好的GUI測試儀?
- 19. 什麼是基於自定義http測試斷言的良好Python庫?
- 20. 是特定的API語言
- 21. Scripting.Dictionary.this [參考對象]」不是由語言
- 22. Python的語言特定好處?
- 23. 代表我的領域特定語言
- 24. 什麼時候是參考Rvalue參考?
- 25. g ++語言和CRT參考
- 26. ODBC公共語言參考?
- 27. 語言代碼參考
- 28. JavaScript語言參考手冊
- 29. 「System.Data.Entity.Infrastructure」的參考是什麼?
- 30. jQuery的$是什麼。參考?
如果英語不是您的第一語言,我很抱歉,但這個問題沒有意義。 – 2009-08-19 07:27:01
更好的標題:「測試編譯器corectness」 – 2009-10-23 16:17:29