文件名称:irradiant:基于Clang的C to Lua源到源编译器
文件大小:18KB
文件格式:ZIP
更新时间:2024-06-10 00:29:59
C++
辐照 基于Clang的C到Lua的源到源编译器。 实施细节 Irradiant目前处于“ hacky原型”阶段。 它使用一个访问者来遍历Clang AST并直接输出Lua代码-不会创建Lua AST。 这种方法可以快速验证概念(因为C-without-type与Lua的表面相似),但是在需要更复杂的分析时会崩溃(例如使用堆,结构等)。 这也意味着它在输出的代码中必须保守一些-因为它不知道每个表达式的上下文,因此它必须产生在任何上下文中都可以使用的Lua。 例如,将a++降低为(function() local _ = a; a = a + 1; return _; end)() -即使没有使用增量结果。 过度使用此方法的一个示例: int i = 0 ; while (i < 10 ) i++; 会变成 local i = 0 while i < 10 do ( fun
【文件预览】:
irradiant-master
----shim()
--------lua()
--------c()
----main.cpp(28KB)
----README.md(2KB)
----test()
--------main.c(932B)
--------repeat.c(363B)
--------stb_perlin.h(7KB)
--------99bottles.c(438B)
--------binomial.c(1KB)
--------switch.c(567B)
--------rot13.c(511B)
--------array.c(234B)
--------chained_if.c(481B)
----.clang-format(261B)
----LICENSE(1KB)
----Makefile(749B)