2009-07-30 66 views
5

在我不斷努力解決我對更多編程知識的渴望的過程中,我提出了嘗試編寫(至少現在)編譯爲字節碼的簡單編程語言的想法。問題是我不知道語言設計的第一件事。有沒有人對構建解析器的方法以及每種語言的基本功能應該有什麼建議?你會爲語言設計推薦什麼樣的閱讀材料?我應該射擊多高的水平?希望能夠包含一個功能以允許用類似gcc的內聯彙編程序內聯字節碼是不現實的?看到我主要用C和Java編寫代碼,這對編譯器編寫會更好?用於設計簡單編程語言的方法

+0

Dupe of http://stackoverflow.com/questions/479013/requirements-for-compiler-design/479048等等。此外,你問的問題太多 - 一次一個是一個很好的規則。 – 2009-07-30 18:18:06

+1

而這個http://stackoverflow.com/questions/1669/learning-to-write-a-compiler是關於主題領域的確定性答案。 – 2009-07-30 18:19:57

回答

3

有很多方法...

你可以看看堆棧語言和Forth。當設計其他語言時,它並不是非常有用,但它可以很快完成。

您可以查看功能語言。他們大多數是基於幾個簡單的概念,並有簡單的解析。而且,它們非常強大。

然後,傳統的語言。他們是最難的。您需要了解詞法分析器,解析器,LALR語法,LL語法,EBNF和常規語言,才能通過解析。

以字節碼爲目標不僅僅是一個好主意 - 在學習過程中做別的只是瘋了,而且大多是無用的。

幫你一個忙,查找關於編譯器的書籍和教程。

C或Java都可以。 Java可能有一個優勢,因爲面向對象的這種類型的任務很適合。我個人的建議是斯卡拉。做這種事情是一種很好的語言,它會教你一些關於語言設計的有趣事情。

1

您可能要先閱讀a book on compilers

對於真正瞭解發生了什麼事情,你可能會希望在C.

編寫代碼

Java的不會是一個不錯的選擇,如果你想寫一種解釋語言,如Jython。但是,因爲它聽起來像你想向下編譯成機器代碼,它可能會在C.

1

容易,我建議閱讀下面的書籍:

ANTLR

Language Design Patterns

這會給你用於創建用於自定義語言的解析器,詞法分析器和編譯器的工具和技術。