Compiler construction 转换到裸骨C?
在观看FOSDEM'14的一些演讲时,我发现自己特别有趣。它是关于Go编程语言,以及它如何通过包访问编译器的内部代码。所以基本上你可以用Go编写一个程序,获取AST(抽象语法树)或更低级的SSA(单一静态赋值)并对其进行分析,或者将其转换为其他内容(比如将其转换为JavaScript)。我觉得很有趣。我还记得其他几种语言:Vala()和Boo。有些语言将解析代码作为一个单独的库提供给AST,比如C/C++/ObjC、Ada或免费的Pascal,但它们并不完全相同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
我正在考虑将Go transcompiler转换为裸体C/C++(以使其更适合操作系统开发,并且只是为了好玩),您认为这是一个好主意吗?有没有其他语言更容易转换成纯C/C++ > P>我遇到的问题是垃圾回收——如果你已经编译成纯C/C++,那么你必须自动插入正确的For()调用,否则你的代码会泄漏内存。使用某种形式的Forth方言也很好,我不认为尝试将Go编译成“基本的C/C++”是个好主意。更正,我认为这根本没有意义。要么你坚持GO运行时,要么只是绕过编译GO代码(GO-> C++ +>二进制,而不是GO->二进制),这不适合OS开发,或者你只需要运行一个运行时间的所有东西,然后用半个语言,这对任何东西都不是很有用,更不用说破坏每一个有趣的Go程序了。编译成C而不是机器语言解决了什么问题?