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源代码。你可以参考这个来获取更多的想法。

相关问题