有没有办法将C代码转换为JavaScript,从JavaScript转换为C?我发现V8 juice
可以从C ++生成JavaScript-side
类,但它只有一种方式(C ++到JavaScript)。
我不是在找软件。
答案 0 :(得分:38)
非常非常棘手--- Javascript是一种非常动态的语言,几乎所有东西都可以在运行时更改:变量,函数,类型等的名称。因此它非常糟糕地映射到C.而且这甚至都不是考虑eval()
,它可以让你在字符串中构造任意的Javascript块并运行它们。
任何Javascript翻译器都必须能够处理这些事情,这意味着它必须在运行时将Javascript转换为C语言 - 这使得它成为您已经使用的JIT。
您可能希望看一下为Javascript编写C绑定。这些将允许您的Javascript代码调用C代码,反之亦然。这将允许人们在C中编写插件,将它们编译到.so
共享库中,您现在可以从Javascript代码加载和运行它们。这意味着您无需翻译任何内容。
Javascript不是我的区域所以我不能推荐任何特定的机制,我很害怕 - 但是如果你已经找到的V8Juice不允许你这样做,我会非常惊讶。 / p>
答案 1 :(得分:20)
可以使用Castl将JavaScript的子集翻译为Lua,然后使用lua2c将Lua代码翻译为C.
或者,可能使用RPython编译器compile JavaScript to Python,然后convert the Python source code into C。由于RPython是Python的一个子集,因此应该允许将JavaScript的子集转换为C。
还有一个名为ts2c的编译器,它显然能够将JavaScript和TypeScript源代码转换为C语言。
另一种选择是使用NectarJS将JavaScript编译为WebAssembly,然后使用wasmdec将其反编译为C源代码。
答案 2 :(得分:6)
为什么转换时只需嵌入?
https://code.google.com/p/v8/ “V8可以独立运行,也可以嵌入到任何C ++应用程序中。”
嵌入到C ++应用程序中允许JavaScript访问C ++应用程序可以访问的任何系统,从而无需首先进行转换。出于安全原因,我会限制访问权限。 Web浏览器显然是嵌入在C ++应用程序中的最突出的JavaScript形式。正如名称所暗示的那样,JavaScript是一种脚本语言,不能像C代码一样编译成汇编/机器代码。
答案 3 :(得分:5)
答案 4 :(得分:1)
可以将javascript转换为C.因为C可以虚拟处理任何执行内容,包括解释器。
答案 5 :(得分:0)
QuickJS中的Fabrice Bellard JavaScript解释器还包含一个JS to C compiler。