转换为裸骨C?

时间:2014-03-21 19:27:52

标签: compiler-construction go

在观看一些FOSDEM 14时,我发现this one特别有趣。它是关于Go编程语言以及它如何访问编译器的内部直通包。所以基本上你可以在Go中编写一个程序来获取AST(抽象语法树)或更低级别的SSA(单个静态赋值)并对其进行分析,或者将其转换为其他东西(例如将其转换为JavaScript)。我觉得很有趣。我还记得其他几种语言:Vala(JavaScript transcompiler)和Boo another JavaScript transcompiler。有些语言将AST的解析代码作为单独的库提供,例如C {C ++ / ObjC为Clang,Ada为ASIS,Free Pascal为CodeTools,但不完全相同

我正在考虑将Go转换器简化为C / C ++(使其更适合于os开发并且只是为了它的乐趣),你认为这是一个好主意吗?有没有其他语言可以更容易地转换为裸骨C / C ++?

1 个答案:

答案 0 :(得分:1)

我遇到的问题是垃圾收集 - 如果您已经转换为纯C / C ++,那么您必须自动插入正确的free()调用,否则您的代码将在整个地方泄漏内存。