将JavaScript代码转换为C代码
有没有什么办法将C代码转换为JavaScript,并从JavaScript转换为C?我发现V8 juice
可以从C++生成JavaScript-side
类,但它只是一种方法(从C++到JavaScript)。将JavaScript代码转换为C代码
我不是在寻找一个软件。
非常,非常棘手--- JavaScript是一种严重的动态语言,其中几乎一切都可以在运行时更改:变量,函数,类型等的名称因此,它非常糟糕映射到C.而这还不是即使考虑eval()
,它可以让你在字符串中构造任意的Javascript块并运行它们。
任何Javascript翻译器都必须能够处理这些事情,这意味着它必须在运行时将Javascript翻译成C语言,这使得它成为JIT,而您已经在使用它。
你可能想看看在写C绑定的Javascript来代替。这些将允许您的Javascript代码调用C代码,反之亦然。这将允许人们使用C语言编写插件,将它们编译到.so
共享库中,您现在可以从您的Javascript代码加载并运行该库。这意味着你不需要翻译任何东西。
Javascript的不是我的区域,所以我不能推荐任何特定的机制,我怕 - 但是如果你已经找到的V8Juice不让你这样做,我会非常惊讶。
尽管如此,计算机程序是确定性的,所以理论上可以将所有东西都编译回C,因为所有用于解释JavaScript的机制都已经存在于C中。有人不得不花费时间制作该工具。谁在做志愿者? x} – trusktr 2015-12-13 08:06:04
这很可能也很容易。你所要做的就是将PHP作为C的预处理器,而不是它现在使用的(如果你希望得到的代码是可读的,#ifdef不会剪切它,并且你需要类似通用映射的构造来完成转换) 。之后,你所做的只是在“编译时”代码和“运行时代码”之间建立一堵墙,在此之后,通过json将js添加到c和反之亦然,并让c评估javascript到JavaScript的内部表示形式,但要做到这一点,并有很好的代码,你需要一个更强大的c预处理器。 – Dmitry 2016-08-10 03:27:35
不幸的是,目前在C中没有“好方法”来制作地图,它们都是丑陋和混乱的,并且容易出错,而且JavaScript几乎完全依赖于地图。你可以用C++来完成,但是现在你可能只是嵌入了V8,因为它是用C++编写的,并且会比你做得更好,但是不会有C的“绝对自由的非抽象抽象和gdb友好”。使用功能更强大的预处理器,C很容易连接到任何向上语言(通过对象支持运行时泛型,而在C中,您需要发明一个对象来存储void指针的元数据) – Dmitry 2016-08-10 03:29:33
为什么要转变时,你可以简单地嵌入?
https://code.google.com/p/v8/ “V8可以独立运行,也可以嵌入到任何C++应用程序中。”
嵌入到C++应用程序允许JavaScript访问的C++应用程序可以访问到任何系统,无需首先转换。尽管如此,为了安全起见,我会限制访问权限。 Web浏览器显然是嵌入在C++应用程序中的最突出的JavaScript形式。正如名称所暗示的那样,JavaScript是一种脚本语言,不打算像C代码那样编译为汇编/机器代码。
在微控制器上怎么样?我的目标是自动将一些数学算法从js转换为C++,所以我不需要手动移植 – Funkodebat 2015-03-24 00:45:56
使用Castl可能会将JavaScript的子集转换为Lua,然后使用lua2c将Lua代码转换为C.
或者,它可能是可能compile JavaScript to Python,然后convert the Python source code into C使用RPython编译器。由于RPython是Python中的一个子集,这应该允许JavaScript的一个子集被翻译成C.
还有一个叫ts2c编译器,这显然是能够JavaScript和打字稿源代码翻译成C.
但是我们想要全集!这很有趣。 – trusktr 2015-12-13 08:09:43
C语言可以做的很多东西,JavaScript或V8发动机不能做,尤其是系统程序,如地狱内存管理,直接内存访问,中断,汇编代码,线程管理。 因此,不可能将c转换为javascript,除非它是非常简单的代码而没有一些系统代码。使用nodeJS(不是v8 javascript)以及系统包装代码可以执行一些系统级功能。这又是一个复杂的转换部分。 即使我们能够转换这个简单的代码,c和转换后的javascript的执行也不同,因为它基于v8引擎。
可以将JavaScript转换为C.因为C可以虚拟地处理任何执行内容,包括解释器的执行内容。
嘿!回到1990年代!现在没有人用C中断了! (除了osdev疯子,像我一样!) – 2018-02-16 16:37:50
我正在运行node.js来执行我的linux服务器下的javascript代码,所以我想让其他人通过编写c代码来添加插件。这就是为什么我需要一个库或像v8汁的引擎将c代码自动转换为javascript的原因。 – 2011-03-04 10:12:55
不是答案,只是一个评论: 有一个JScript编译器的Windows/.NET带来的。它被称为jsc.exe。 它无法编译每个JavaScript。 如果安装它,它位于c:\ Windows \ winsxs或C:\ Windows \ Microsoft.NET \ Framework \中。 如果你有一个没有花哨的东西的简单的JavaScript算法,它可能会工作。 –
Laokoon
2016-10-06 07:48:46
它对我没有任何意义。 – Rolf 2016-11-03 11:04:17