2

我有一个程序将一组语句放入一个变量中,我如何将该代码块(以字符串形式提供给变量)动态地放入当前正在执行的代码中以进行编译和执行。我急切地等待这个解决方案。任何具有此功能的编程语言..如果是,请粘贴此问题的代码

4

3 回答 3

4

Perl 使这变得简单。

在 Perl 中:

eval q{ print "Hello world!\n" };

或者

$code = ' print "Hello world!\n"; ';
eval $code;

评估

请注意,您应该小心从哪里获取代码。您将语言的全部力量展示给为您提供输入的任何人。确保它来自安全的来源。 所谓的“字符串评估”在任何支持它的语言中都是高风险行为。 例如,接受来自 Web 用户的输入并将其作为代码在您的服务器上运行,这只是自找麻烦。

关于 C:C 是一种编译语言,编译器在运行时不可用。另一方面,没有什么可以阻止您在 C 程序中嵌入 Perl 解释器,这将使您在编译的 C 应用程序中运行时编译和执行 Perl 代码。郑重声明,C++ 在同一条船上。它是一种编译语言,编译器不是运行时环境的组件。

至于 Java,有这篇文章:Java 6.0 Compiler API

于 2012-10-19T10:00:01.863 回答
1

既然你说“任何语言”,我会忽略你的标签。

在 Python 中,这很简单:

code = "print \"hello world\""
exec code

这将打印“hello world”。

C 没有这样的功能,因为编译器在运行时不存在。

于 2012-10-19T09:58:24.367 回答
1

您正在寻找javaScripteval()函数

于 2012-10-19T09:59:37.637 回答