假设有一种名为ScriptCode的脚本语言,它具有使用相同语言执行代码的功能。
//这个ficticius程序执行一个简单的常量代码。
main()
{
ScriptCode sc=new ScriptCode ( "print \"Hello\"");
execute(sc);
print (" world");
}
//这个ficticius程序将从stdin中读取10个程序,然后全部执行它们。
main()
{
ScriptCode programs[10]
String input;
for(int i=0;i<10; i++)
{
input =readInput();
program[i] = new ScriptCode(input);
}
for( SriptCode p : programs)
execute( p );
}
问题是:
哪种现有的程序语言可以“ScriptCode”? 要么 怎么可以实现这种软件?
(我希望LISP不是唯一的选择,但如果是这样的话......我将不得不面对它。)
由于
答案 0 :(得分:3)
您的execute
例程传统上称为eval
。 wikipedia article on eval列出了许多具有“eval”的语言,包括JavaScript,ActionScript,Lisp,Perl,PHP,Lua,PostScript,Python,D,ColdFusion,REALbasic,Ruby,Forth,VBScript,Visual Basic for Applications,和Smalltalk。下面的评论中也提到了SQL(谢谢)。
通常,实现使用与语言本身相同的代码(以减少重复)。所以解释型语言调用解释器,编译语言调用编译器。由于解释程序必须包含在解释程序中,但编译器通常不包含在编译程序中,因此此功能在解释语言中更常见。
答案 1 :(得分:0)
类似的东西:
#!/bin/bash
# ohai, I'm bash, this is test
i=3
while ((i--)); do
read -ra prog
${prog[@]}
done
获取命令,运行它。测试用例
$ bash test
echo foo
foo
mpc play
65daysofstatic - The Conspiracy of Seeds
printf %s\n heh
heh
我想,在某种程度上,大多数解释语言都适合。
现在如果input是一个文件,你甚至可以编译它并运行可执行文件,即使使用简单的C
程序也是如此。
这个游戏的规则是什么?
答案 2 :(得分:0)
Smalltalk回答:
编译器评估:&#39; 3 + 4&#39;
==&GT; 7