私のプログラムはC#のWindowsフォームアプリケーションです。C# "scanf"(カスタムコンソール付き)
私はインタプリタ/コンパイラIDEを持っていますが、基本的にカスタマイズされたコンソールウィンドウでカスタム言語を実行します。
"scanf"のような入力行を解釈するとき、ユーザーが入力を押していない間に通訳を一時停止するにはどうすればよいですか?
解析するサンプル・カスタムコード:私のプログラムは、3行目を処理するときに、ユーザーが何かを入力し、Enterキーを押すまで、例えば
1 VAR x AS INT
2 START
3 INPUT: x
4 OUTPUT: x
5 STOP
は、これらのラインで、それは他の行を処理しません。
ライン解析によってラインの擬似スニペット:
foreach (string line in inputCode)
{
LineType lineType = line.getType();
if(lineType.InputStatement)
{
//wait for input here
}
else if(lineType.OutputStatement)
{
//analyze output code here
}
else if(lineType.AssignmentStatement)
{
//do Evaluation here
}
}
解説していただけますか? – helix
基本的には、プロシージャコードを非同期に変換します。 C#5の非同期またはイテレータを使用して簡単にすることができます – SLaks
私はMicrosoft V.S.を使用しています。 2010 Express with C#3.0。それは非同期をサポートしていません... – helix