我正在創建一個新的域特定語言。你如何測試一種語言,或者你可以用語言來做什麼(變換,編譯,檢查)。 什麼是學習最佳實踐的好參考或起點?什麼是測試域特定語言的好參考?
回答
這可能與您試圖提問的內容完全無關,但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. 什麼是動作特定語言(ASL)?
- 2. - 什麼是最好的語言開始?
- 3. F# - 領域特定語言
- 4. 什麼是語言綁定?
- 5. Python的參考語言:外地定義
- 6. 未定義參考`圓的 'C語言
- 7. 什麼時候應該使用域特定語言?
- 8. 爲什麼Ruby on Rails稱爲域特定語言?
- 9. 創建特定於域的查詢語言的步驟是什麼?
- 10. ABAP單元測試類 - 良好參考
- 11. 什麼是非oo語言的原型單元測試框架?
- 12. 什麼是好的數據庫模型定義語言?
- 13. 是特定的API語言
- 14. 什麼是好的GUI測試儀?
- 15. Python的語言特定好處?
- 16. g ++語言和CRT參考
- 17. ODBC公共語言參考?
- 18. JQOM有什麼好的參考?
- 19. c語言中的語法是什麼語法作爲參數
- 20. 什麼是良好的測試環境中測試的JQuery
- 21. 什麼是實體參考定義
- 22. 域名特定語言博客
- 23. 特定領域語言資源
- 24. 編寫便攜式域特定語言
- 25. 什麼是各種平臺和語言的參考時期(和時間)?
- 26. 是否有很好的參考SharePoint的數據綁定語法?
- 27. .NET自然語言編程/別名/(域特定語言)框架
- 28. 摩卡測試角參考錯誤:未定義區域
- 29. 什麼是JPA參考
- 30. 什麼是跟蹤參考?
如果英語不是您的第一語言,我很抱歉,但這個問題沒有意義。 – 2009-08-19 07:27:01
更好的標題:「測試編譯器corectness」 – 2009-10-23 16:17:29