私はインタラクティブなフィクションゲームのカスタムプログラミング言語を開発しています。言語はコンパイルされることを意図したものではなく、Pythonのようなインタプリタ言語のものです。私はC#でパーサーを構築しています。このインタプリタを構築する際に、私はメモリ内のスコープをどのように表現するかについて質問をしました。私はすべての変数を特別な変数クラスに格納しています。内部スコープの表現のためのデータ構造が必要です
public class scope
{
public List<variable> variables;
public scope()
{
variables = new List<variable>();
}
}
質問は、データ構造のどのような私は簡単にこれらのスコープを保存するために使用することができますされています。また
public class variable
{
public string str;
public DataType datatype; //an enum with all datatypes supported by the language
public int id;
private static int increment;
public variable(string str, DataType datatype)
{
this.str = str;
this.datatype = datatype;
this.id = increment;
increment++;
}
}
は、私は特定の範囲内にある変数を保持するための特別なスコープのクラスを持っています特定のスコープからアクセス可能なすべてのスコープ(したがって、それらのスコープ内の変数)をすばやくループすることができますか?私は木のような何かが必要です。