0

假设有一种称为 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 唯一的选择,但如果是这样的话......我将不得不面对它。)

谢谢

4

3 回答 3

3

您的execute例程传统上称为eval. 关于 eval的维基百科文章列出了许多具有“eval”的语言,包括 JavaScript、ActionScript、Lisp、Perl、PHP、Lua、PostScript、Python、D、ColdFusion、REALbasic、Ruby、Forth、VBScript、Visual Basic for Applications 和短暂聊天。下面的评论中也提到了 SQL(谢谢)。

通常,实现使用与语言本身相同的代码(以减少重复)。所以解释语言调用解释器,编译语言调用编译器。由于解释器必须包含在解释程序中,但编译器通常不包含在编译程序中,因此此功能在解释语言中更为常见。

于 2012-04-23T00:44:16.077 回答
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

我想,在某种程度上,大多数解释语言都适合。

现在如果输入是一个文件,你甚至可以编译它并运行可执行文件,即使是简单的C程序。

这个游戏的规则是什么?

于 2012-04-21T00:37:52.240 回答
0

小话回复:

编译器评估:'3 + 4'

==> 7

于 2012-05-01T01:55:23.653 回答