2012-01-15 217 views
0

我對編寫自定義語言很感興趣。在深入Flex之前,我想問問在我開始研究之前是否有可能做到這一點,或許在工作一週後,我會意識到這是不可能的。我的目標是創建簡單的腳本語言,該語言將被轉換爲C語言,而不會進一步編譯,直到機器代碼因爲此代碼進入嵌入式平臺並需要以與正常語言不同的方式進行編譯。我的觀點是做出這樣的事情:書面腳本 - > Parser根據規則將該代碼轉換爲C代碼 - >編譯爲嵌入式機器代碼。自定義腳本語言

所以也許有人可以建議我這樣做的方式。目前我閱讀關於Flex &基於Bison的自定義語言,它被編譯成機器碼,但我認爲這不是我需要的。

回答

3

您可能會閱讀一些關於域名特定語言的文獻,例如, DSL2011和更早的程序。

不要過分關注lexing和解析。大部分工作和問題都是在定義語言語義和實現。

將DSL轉換爲C並不是一件容易的事。例如見我的DSL2011 paper on MELT

閱讀一些有關語言語義和語用學的好書,例如Programming Language Pragmatics Scott。

請同時閱讀Garbage Collection Handbook(Jones,Hosking,Moss)。

最後,讀C.Queinnec Lisp in Small Pieces,這主要是涵蓋翻譯動態類型語言C.

要知道,文法和解析的是在你的工作中最容易的事的一些版本。

您是否考慮過嵌入一些現有的腳本語言,如luapythonguile或使用像Parrotnekovm

現有的虛擬機不要忘了學習幾種不同的特定領域或腳本或編程語言。你需要知道的不止一個!

我強烈建議您以源代碼形式免費提供您的實現。將用戶吸引到新的DSL是相當困難的,並且提供免費的實施降低了障礙。

+0

真的,謝謝你,我認爲這是我正在尋找的東西。 – 2012-01-16 18:36:24

+0

很奇怪你接受了答案,但沒有評價它! – 2012-01-16 18:42:52

+0

用戶在獲得15個代表權後才能獲得積極特權。點。 – eriktous 2012-01-16 23:27:28