我正在尝试为以下想法确定现有技术:

1)用户使用称为(insert_name_here)的语言输入一些代码;

2)用户从知名的输出候选列表(javascript,ruby,perl,python)中选择一种目标语言;

3)处理器将insert_name_here转换为目标语言中的可运行代码;

4)处理器然后根据选择的语言,使用相关的系统调用来运行代码

之所以可行,是因为在从insert_name_here到所有受支持的目标语言的所有语言结构之间都有预先建立的1对1映射。

免责声明:显然,这不会产生适合目标语言的“优雅”代码。它只是执行了可运行的基本翻译。目的是允许开发人员获得对于那些不想重新发明轮子,但出于某种原因而需要在特定项目中使用特定语言的情况,则可以用几种不同的语言快速实现算法的麻烦。)

这已经存在吗?

有帮助吗?

解决方案

有适用于不同语言的转换器。您将要处理的问题是库。虽然语言语句之间的映射可能很容易,但是在库函数之间查找映射将非常困难。

我不太确定这种类型的代码生成器是否有用。您为什么要用一种语言写一些东西然后立即将其转换为另一种?我可以看到将图表或模型转换为代码的第四代语言的基本原理,但我看不出您的努力重点。

其他提示

.NET CLR的设计使得C ++。Net,C#.Net和VB.Net都可以编译为相同的机器语言,并且您可以将该CLI重新“反编译”为这些语言中的任何一种。

是的,我会说它已经存在,尽管并不完全像您描述的那样。

是的,存在将程序从一种表示形式转换为另一种确实的程序。这就是所谓的“编译器”。

关于您的问题是否总是可能的:只要您的目标语言至少与源语言一样强大,那么就有可能。因此,如果您的目标语言是图灵完备的语言,那么总是是可能的,因为没有一种语言比图灵完备的语言更强大。

但是,不需要笨拙的1:1映射。

例如:将CIL字节码编译为JavaScript源代码的Microsoft Volta编译器有一个问题:.NET有线程,JavaScript没有。但是您可以使用延续来实现线程。嗯,JavaScript也没有延续,但是您可以实现带有异常的延续。因此,Volta将CIL转换为CPS,然后实施带有例外的CPS。 (较新版本的JavaScript具有生成器形式的半协程;也可以使用这些协程,但是Volta旨在跨多种JavaScript版本工作,包括Internet Explorer中的JScript。)

这似乎有些奇怪。如果您以最常见的形式使用“现有技术”一词,则是在讨论可能具有专利权的想法。如果,您将:

1 /公布了这个想法,从专利申请开始计时-我可能会错误地假设您是美国人。其他司法管辖区可能有其他规定。

2 /告诉您整个星球您的想法,这意味着尝试专利并没有什么用,除非您很快采取行动。

如果您不打算申请专利,而只是以通俗的方式使用“现有技术”一词,我深表歉意。我为一家非常重视专利的公司工作,并且深入研究了我们在申请之前允许我们对信息进行的处理。

说过,获得专利的想法必须是新颖的,有用的且不显而易见的。我认为您的想法不会成功,因为您正在描述一种语言翻译器,该语言翻译器具有许多pascal-to-c和fortran-to-c转换器的现有技术。

一线希望是,您的想法能够生成多种输出语言之一(p2c和f2c不能做到),但是我认为即使那样,交叉编译器(例如gcc)也可以解决。 ),从而将源代码变成许多不同的对象语言之一。

IBM有一个称为Visual Age Generator的产品,您可以在其中使用一种(专有)语言进行编码,然后将其转换为COBOL / C / Java / others,以在从PC到大型家用System z大型机的不同目标平台上运行,因此这是您的第一个问题(考虑为世界上最大的专利权人IBM已在使用专利这一想法)。

大量。p2c,f2c和C ++和Objective C的原始实现立即引起了我的注意。除此之外,很难将您所描述的内容与任何编译器区分开,特别是对于我们这些老家伙来说,他们的编译器无论如何都会为中间重新生成ASM代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top