如果我想創建自己的語言,是否有任何工具可以幫助我?我聽說過yacc,但我想知道如何在語言中實現我想要的功能。創建您自己的語言
創建您自己的語言
回答
我推薦的第一個工具是Dragon Book。這是構建編譯器的參考。設計一門語言不是一件容易的事,實施起來更加困難。龍書幫助那裏。本書甚至提到了標準的unix工具lex和yacc。 gnu等效工具被稱爲flex和野牛。它們都生成詞法分析器和解析器。還存在更多用於生成詞法分析器和分析器的現代工具,例如,對於java來說,有ANTLR(我還記得javacc和CUP,但我只用了自己的ANTLR)。 ANTLR結合瞭解析器和詞法分析器以及eclipse插件的事實使得它非常易於使用。但是爲了比較它們,你需要的解析器的類型,並知道你需要什麼,你應該閱讀龍書。還有其他的東西,你必須考慮,如運行環境,編程範例,...
如果你已經有一定的設計思想,並需要幫助的某個步驟或細節,那麼漫遊者可能會更有幫助。
ANTLR是一個用Java編寫的非常好的解析器生成器。還有一個terrific book。
與此密切相關的問題(所有采取的計算器上[compiler]
搜索):
...
個
而且類似主題(來自同一搜索):
...
編輯:我知道這個計算器的相關問題,搜索是不是我們希望它是,但 當時我們真的需要這個主題的第n次迭代?咩!
我喜歡的Flex(快速萊克斯)詞法]
和野牛(有毛的Yacc)另一個編譯器編譯]
兩者都是免費的,適用於所有* NIX安裝。對於Windows,只需安裝cygwin。
但我老同學。
通過使用這些工具,您還可以在互聯網上找到很多流行語言的lex規則和yacc gramer。從而爲您提供一種快速啓動和運行的方式,然後您可以隨時自定義文法。
例如:算術表達式處理[優先順序等是一個完成死亡問題],您可以從網上快速獲得這個語法。
另一種想法是寫一個GCC的前端擴展。
非平凡但如果你想要一個編譯語言,它會在代碼生成部分節省很多工作(你仍然需要知道愛和理解flex/bison)。
- 1. 創建您自己的ADDED_TO_STAGE事件
- 2. 創建您自己的系統顏色
- 3. 何時創建您自己的IEnumerable類
- 4. 創建您自己的Keras優化器
- 5. magento:創建您自己的收藏
- 6. Android創建您自己的菜單
- 7. 人們如何創建自己的編程語言?
- 8. 如何將您自己的編程語言添加到IDE中?
- 9. 如何在thrift-compiler中爲自定義語言創建自己的節儉語言模板?
- 10. 在Linux內核中創建您自己的自定義信號
- 11. C語言創建
- 12. SharpDevelop:您是否可以爲非.NET語言創建語言插件
- 13. 創建自然語言問題
- 14. 爲您的網站創建廣告系統(我自己的AdSense)
- 15. 在Java桌面應用程序中創建自己的腳本語言?
- 16. 如何使用語言支持在JBoss Portal中創建自己的header.jsp?
- 17. 創建您自己的散列表和散列表
- 18. 在Dynamics GP eConnect上創建您自己的Web服務?
- 19. 創建您自己的TRAP異常處理程序?
- 20. 創建您自己的Open Graph Protocol類型?
- 21. 推薦學習創建您自己的操作系統?
- 22. 創建您自己的光柵引擎是什麼意思?
- 23. 如何爲您自己的R包創建新聞功能
- 24. 創建自己的LiveWallpaperPreview?
- 25. 創建自己的類
- 26. 創建自己的JLabel
- 27. 創建自己的groovy庫
- 28. 創建自己的NotificationStyle
- 29. 創建自己的「SeekBar」
- 30. 創建自己的Zend_Auth_Adapter
這個規範的問題是:http://stackoverflow.com/questions/1669/learning-to-write-a-compiler – dmckee 2010-02-04 14:55:03