2

我有一個想法來創建腳本語言,這將使人們編程更容易做大量的宏,函數,更簡單的函數名稱對於簡單的人來說更簡單。該代碼(自定義腳本語言)應該被轉換爲簡單的C語言。像這樣:是否可以編寫轉換爲C代碼的腳本語言?

Scripting: 
IO[9].high 
@include "lib" 
for (int i=0 to 55) 

end 
C: 
IO |= (1<<9); 
#include "lib.h" 
int i = 0; 
for (i=0; i<55; i++) { 

} 

是否有可能以某種方式有效地寫入這個宏/腳本語言,這將很好地輸出到C代碼?

+4

是的,這是可能的。但這並不容易。 – 2012-07-10 11:48:33

+12

當然這是可能的:畢竟,這是文本到文本的簡單轉換。你認爲世界需要另一種語法來表示C程序嗎? – dasblinkenlight 2012-07-10 11:48:45

+0

可以這樣做,但它通常不是正確的解決方案。你會(可能)更好地爲clang/llvm之類的東西寫一個前端。 [例子](https://donsbot.wordpress.com/2010/02/21/smoking-fast-haskell-code-using-ghcs-new-llvm-codegen/) – Flexo 2012-07-10 11:49:01

回答

3

絕對;一些編譯(或編譯)爲C的語言包括Eiffel,Haskell(GHC),Vala和Squeak。早期版本的C++被實現爲C++ - to-C轉換器(CFront)。

一般概念是intermediate language。 C被提及爲used as an intermediate language;通過使用C編譯器,您可以獲得與許多語言和庫的二進制兼容性,避免編寫自己的編譯器;裏奇將C描述爲「portable assembly language」。但是,與C++一樣,您可能會很快發現定位C會變得過於嚴格; GHC正在朝着專用中間語言C--邁進,並且您可能會發現使用LLVM toolchain(本質上,以LLVM中間表示爲目標)是一種更好的多平臺兼容性方法。

+0

問題是,我開發這種「語言」的8位微控制器,我不能使用llvm和其他很酷的東西,我非常侷限於avr-gcc。現在我認爲只有解決方案是preg_match許多事情,並取代C等價物。 – 2012-07-10 12:43:33

1

例如,您是否看到過netsnmp的腳本mib2c?它使用腳本生成C源代碼。你可以參考這個來獲取更多的想法。

相關問題