私はJavaScriptをベースにしたKarelロボット(Wikipedia)のような小さなロボットを作成しました。javascriptのevalの実行を遅く
ロボットがように、このような「前進」、「turnright」などいくつかの簡単なコマンドで制御することができます。
ユーザは、ロボットを制御するためのjavascriptプログラムを作成し、ロボットが動くようにjavascriptの "eval()"関数を実行することができます。
問題は、彼が何をしているのかを見ることができるようにロボットをゆっくり動かし、エディタで現在のコード行を強調表示できるようにすることです。
現在の方法:私はテキストエリアの各行を解析した後、次いで、次々に実行されるアクションのスタックを構築すること(オフラインバージョンで)これを解決した時点で
の解析window.setTimeout。しかし、私はほとんどすべてのjavascript言語の構文解析コードを書く必要があるので、これは限られています。これは多くの作業とエラーが発生しやすいです。
これまでいくつかの追加情報:
解析バージョン:http://abi-physik.de/_niki2/js/niki.js
重要な機能は、スクリプトの一番下にある:バージョンjsのコード解析http://abi-physik.de/_niki2/niki.php
ラン()、(実行)
私は現在、行ごとにユーザースクリプトを解析し、そのアクションをスタックに追加しています。パーサが "if"を検出すると、新しいスタックを開始し、そのスタックにすべてのアクションを追加します。パーサが "}"を検出すると、 "if"スタックが閉じられ、引き続きアクションがベーススタックに追加されます。
これを改善するためのアイデアはありますか?
";"で分割線を試しましたか?または\ n次にevalに1つずつ渡す – Pradeep
私はそれについて考えましたが、まだ試していませんでした。if-conditionには何が起こるでしょうか? –
この場合も、if、whileループのものを実装する必要があります。 1つのコードブロックに結合することはできますが、アニメーションは表示されません。 – Pradeep