さて、これが私がやりたいことです:私は両方ともコンソールウィンドウとして機能するテキストフィールドとテキストエリアを持っています。私はjavascript(jQuery)を使用した独自のプログラミング言語を使用したインタープリターの非常に基本的なシミュレーションを開発しているため、ユーザーが以前に入力したプログラムの実行を開始すると、すべての命令を実行し、特別な命令に到達したときに( " leer ")ユーザーはこのコンソールに何かを入力し、プログラムの実行を一時停止する必要があります。「return」キーが押されたときにユーザーが入力を完了したことを私は知っています。その場合、プログラムは通常の実行フローを続行します。
現在、この動作は確認ボックスの動作と非常によく似ています。これは、入力を待機し、ユーザーがいずれかのボタン(yes / no)を押すと実行が続行されるためです。
皆さんが私の問題が何であるかを知っているように、私が十分に明確に説明したことを願っています。ここにコードを配置するのは素晴らしいことですが、コードのどの部分が役立つかはわかりません。コードのチャンクが必要な場合は、お知らせください。
ページは次のようになります。
そして、これがすべてのプログラムを実行するために使用されるコードです:
this.ejecutarPrograma = function(pidprograma) {
var programa = this.listaProgramas[pidprograma];
if(programa == undefined) throw "ERROR!, PID no encontrado"
var posIni, posEnd;
posIni = programa.obtenerRbp();
posEnd = programa.obtenerRlc();
this.cp = posIni;
var temp = this.memoria[this.cp].split(/\s+/);
while (this.cp < posEnd || temp[0] != "retorne") {
try {
if (temp[0] == "vaya") {
this.cp = ACCIONES[temp[0]](this.cp, temp[1], programa);
}
else if (temp[0] == "vayasi") {
this.cp = ACCIONES[temp[0]](this.memoria[0], this.cp, temp[1], temp[2], programa);
}
else if (temp[0] == "nueva" || temp[0] == "etiqueta" || temp[0] == "retorne") {
// nada de nada por aca porque estos ya estan implementados
this.cp++;
}
else {
this.memoria[0] = ACCIONES[temp[0]](this.memoria[0], temp[1], programa);
this.cp++;
}
var temp = this.memoria[this.cp].split(/\s+/);
}
catch (e) {
throw "Linea " + (this.cp).toString() + ": " + e;
}
}
};
ACCIONESは、命令の名前を保持する連想配列であり、値には関数があるため、命令「leer」は空であり、入力から値を取得し、その値をプログラムの変数にコピーします。
みんなの助けてくれてありがとう。