假设有一种称为ScriptCode的脚本语言,它能够以相同的语言执行代码。
//这个虚构的程序执行一个简单的常量代码。
main()
{
ScriptCode sc=new ScriptCode ( "print \"Hello\"");
execute(sc);
print (" world");
}//这个虚构的程序将从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的唯一选择,但如果是这样的话..我将不得不面对它。)
谢谢
发布于 2012-04-23 08:44:16
传统上,您的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 (谢谢)。
通常,实现使用与语言本身相同的代码(以减少重复)。所以解释语言调用解释器,编译语言调用编译器。由于解释器必须包含在解释程序中,而编译器通常不包含在编译程序中,因此此功能在解释语言中更为常见。
发布于 2012-04-21 08:37:52
类似于:
#!/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我想,在某种程度上,大多数解释型语言都适合。
现在,如果输入是一个文件,您甚至可以编译它并运行可执行文件,即使是使用简单的C程序。
这个游戏的规则是什么?
发布于 2012-05-01 09:55:24
Smalltalk答案:
编译器求值:'3 + 4‘
==> 7
https://stackoverflow.com/questions/10253115
复制相似问题