c2go是一个将C代码转译为Go代码的项目。c2go把整个转换过程分为这样几个步骤:
首先,用C语言的预处理程序(preprocessor)解决掉宏和各种预编译指令。
其次,生成的C代码再通过llvmproject中的clang命令行进行解析(parser): clang-Xclang-ast-dump=json-fsyntax-only[C源文件...]这样就得到C语言的抽象语法树(CAST)。接着,就是将CAST转为GoAST。然后通过GoAST调用go/format这个标准库来生成Go源文件,最后用Go编译器编译它。
评论