Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 转换到裸骨C?_Compiler Construction_Go - Fatal编程技术网

Compiler construction 转换到裸骨C?

Compiler construction 转换到裸骨C?,compiler-construction,go,Compiler Construction,Go,在观看FOSDEM'14的一些演讲时,我发现自己特别有趣。它是关于Go编程语言,以及它如何通过包访问编译器的内部代码。所以基本上你可以用Go编写一个程序,获取AST(抽象语法树)或更低级的SSA(单一静态赋值)并对其进行分析,或者将其转换为其他内容(比如将其转换为JavaScript)。我觉得很有趣。我还记得其他几种语言:Vala()和Boo。有些语言将解析代码作为一个单独的库提供给AST,比如C/C++/ObjC、Ada或免费的Pascal,但它们并不完全相同 我正在考虑将Go transco

在观看FOSDEM'14的一些演讲时,我发现自己特别有趣。它是关于Go编程语言,以及它如何通过包访问编译器的内部代码。所以基本上你可以用Go编写一个程序,获取AST(抽象语法树)或更低级的SSA(单一静态赋值)并对其进行分析,或者将其转换为其他内容(比如将其转换为JavaScript)。我觉得很有趣。我还记得其他几种语言:Vala()和Boo。有些语言将解析代码作为一个单独的库提供给AST,比如C/C++/ObjC、Ada或免费的Pascal,但它们并不完全相同


我正在考虑将Go transcompiler转换为裸体C/C++(以使其更适合操作系统开发,并且只是为了好玩),您认为这是一个好主意吗?有没有其他语言更容易转换成纯C/C++

> P>我遇到的问题是垃圾回收——如果你已经编译成纯C/C++,那么你必须自动插入正确的For()调用,否则你的代码会泄漏内存。使用某种形式的Forth方言也很好,我不认为尝试将Go编译成“基本的C/C++”是个好主意。更正,我认为这根本没有意义。要么你坚持GO运行时,要么只是绕过编译GO代码(GO-> C++ +>二进制,而不是GO->二进制),这不适合OS开发,或者你只需要运行一个运行时间的所有东西,然后用半个语言,这对任何东西都不是很有用,更不用说破坏每一个有趣的Go程序了。编译成C而不是机器语言解决了什么问题?