0

同じ言語でコードを実行する機能を備えた 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 が唯一の選択肢ではないことを願っていますが、もしそうなら..私はそれに直面しなければならないでしょう。)

ありがとう

4

3 に答える 3

3

あなたのexecuteルーチンは伝統的にと呼ばれてevalいます。evalに関するwikipediaの記事には、JavaScript、ActionScript、Lisp、Perl、PHP、Lua、PostScript、Python、D、ColdFusion、REALbasic、Ruby、Forth、VBScript、Visual Basic for Applications、 Smalltalk。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 に答える