Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 是否自动将代码从一种表示转换为另一种表示?_Algorithm_Abstract Syntax Tree_Intermediate Language - Fatal编程技术网

Algorithm 是否自动将代码从一种表示转换为另一种表示?

Algorithm 是否自动将代码从一种表示转换为另一种表示?,algorithm,abstract-syntax-tree,intermediate-language,Algorithm,Abstract Syntax Tree,Intermediate Language,有没有办法将代码从一种高级表示转换为另一种高级表示?例如,在Javascript中,维护状态的一种流行方式是使用名为Redux的第三方库。另一方面,VueJS有自己的Redux版本,虽然略有相似,但有所不同。有没有一种方法可以在两种表示之间自动转换 我怀疑可能有一种使用ASTs的方法;然而,至少在JS中,AST似乎擅长于低级转换,例如:const x=2*4到const x=8。然而(至少对于JS来说),让我上面描述的更高级别的转换看起来很痛苦 如果没有现有的解决方案,那么最新技术(即当前的研究

有没有办法将代码从一种高级表示转换为另一种高级表示?例如,在Javascript中,维护状态的一种流行方式是使用名为Redux的第三方库。另一方面,VueJS有自己的Redux版本,虽然略有相似,但有所不同。有没有一种方法可以在两种表示之间自动转换

我怀疑可能有一种使用ASTs的方法;然而,至少在JS中,AST似乎擅长于低级转换,例如:
const x=2*4
const x=8
。然而(至少对于JS来说),让我上面描述的更高级别的转换看起来很痛苦

如果没有现有的解决方案,那么最新技术(即当前的研究论文等)是什么

您可以使用

这些工具解析源代码,构建AST,并允许对AST应用转换以生成不同的程序;AST上的转换完成后,PTS将从AST重新生成源文本

只有少数几个工具(都在Wikipedia页面上)可以处理任意语言()或者足够强大,可以让一个人实现任意复杂的转换,如果你从一种语言转换到另一种语言,这正是你真正需要的

您可以尝试通过获取一个解析树并尝试自己实现它的其余部分来实现这一点。看看为什么这在实践中根本不起作用。这些都是很难在实践中构建的工具,这就是为什么它们不多的原因

即使您使用更好的工具,构建一个严肃的代码翻译引擎也是昂贵的。我这样做是为了谋生;在特定的PTS之上构建这样一个工具需要12-24个人月的时间,我们已经花了20年的时间来调整这种任务