2008-12-13 82 views
8

如果我想創建自己的語言,是否有任何工具可以幫助我?我聽說過yacc,但我想知道如何在語言中實現我想要的功能。創建您自己的語言

+3

這個規範的問題是:http://stackoverflow.com/questions/1669/learning-to-write-a-compiler – dmckee 2010-02-04 14:55:03

回答

9

我推薦的第一個工具是Dragon Book。這是構建編譯器的參考。設計一門語言不是一件容易的事,實施起來更加困難。龍書幫助那裏。本書甚至提到了標準的unix工具lex和yacc。 gnu等效工具被稱爲flex和野牛。它們都生成詞法分析器和解析器。還存在更多用於生成詞法分析器和分析器的現代工具,例如,對於java來說,有ANTLR(我還記得javacc和CUP,但我只用了自己的ANTLR)。 ANTLR結合瞭解析器和詞法分析器以及eclipse插件的事實使得它非常易於使用。但是爲了比較它們,你需要的解析器的類型,並知道你需要什麼,你應該閱讀龍書。還有其他的東西,你必須考慮,如運行環境,編程範例,...

如果你已經有一定的設計思想,並需要幫助的某個步驟或細節,那麼漫遊者可能會更有幫助。

4

ANTLR是一個用Java編寫的非常好的解析器生成器。還有一個terrific book

10

與此密切相關的問題(所有采取的計算器上[compiler]搜索):

而且類似主題(來自同一搜索):


編輯:我知道這個計算器的相關問題,搜索是不是我們希望它是,但 當時我們真的需要這個主題的第n次迭代?咩!

2

我喜歡的Flex(快速萊克斯)詞法]
和野牛(有毛的Yacc)另一個編譯器編譯]

兩者都是免費的,適用於所有* NIX安裝。對於Windows,只需安裝cygwin。
但我老同學。

通過使用這些工具,您還可以在互聯網上找到很多流行語言的lex規則和yacc gramer。從而爲您提供一種快速啓動和運行的方式,然後您可以隨時自定義文法。

例如:算術表達式處理[優先順序等是一個完成死亡問題],您可以從網上快速獲得這個語法。

另一種想法是寫一個GCC的前端擴展。
非平凡但如果你想要一個編譯語言,它會在代碼生成部分節省很多工作(你仍然需要知道愛和理解flex/bison)。