compiler-construction - 转译为裸骨 C?

标签 compiler-construction go

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

我正在考虑为基本的 C/C++ 制作一个 Go 转译器(以使其更适合操作系统开发并且只是为了它的乐趣),你认为这是个好主意吗?是否有任何其他语言可能更容易转换为裸机 C/C++?

最佳答案

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

关于compiler-construction - 转译为裸骨 C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567848/

相关文章:

go - falcore 热重启不会重新加载主代码

mongodb - MongoDB 中的 Golang 嵌套对象

c - Autoconf 忽略编译器标志

scala - Scala 是否足以用于 native 、系统和内核编程?

parsing - 在编写基于 LR(0) 算法的解析器时,什么是 magic 和 tau 步骤?

parsing - 尝试使用 Golang 在命令行上解析标准输出

go - 如何将中间件写入具有多个方法的接口(interface)?

c# - 在 C# 中优化代码是否存在风险?

c++ - 编译器或链接器内联函数的差异?

go - 使用 gRPC 的上下文与 SendMsg/RecvMsg 方法发送元数据