2012-04-20 34 views
0

假設有一種腳本語言叫做ScriptCode,具有執行相同語言代碼的功能。如何實現數據執行(就像它是腳本源代碼一樣)

//這個ficticius程序執行一個簡單的常量代碼。

main() 
{ 
    ScriptCode sc=new ScriptCode ("print \"Hello\""); 

    execute(sc); 

    print (" world"); 
} 

//這個ficticius程序會從標準輸入讀取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); 

} 

的問題是:

其中存在的程序語言可以 「腳本代碼」 是什麼? 或 這種軟件如何實現?

(我希望它不是Lisp中唯一的選擇,但如果是這樣..我將不得不面對它。)

感謝

回答

3

您的execute例行傳統上被稱爲evalwikipedia article on eval列出了許多具有「eval」的語言,包括JavaScript,ActionScript,Lisp,Perl,PHP,Lua,PostScript,Python,D,ColdFusion,REALbasic,Ruby,Forth,VBScript,Visual Basic for Applications和Smalltalk。下面的評論中也提到了SQL(謝謝)。

通常,實現使用與語言本身相同的代碼(以減少重複)。所以解釋語言會調用解釋器,並且編譯語言會調用編譯器。由於解釋程序必須包含在解釋程序中,但編譯程序通常不包含在編譯程序中,因此此功能在解釋語言中更爲常見。

+0

您可以添加SQL到列表,幾乎所有的SQL環境中支持動態SQL。 – RBarryYoung 2012-04-23 03:25:53

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程序編譯並運行可執行文件。

這場比賽的規則是什麼?

0

Smalltalk的答案:

編譯評價: '3 + 4'

==> 7

相關問題