Я создал маленького робота, такого как робот Карел ( Википедия ), который основан на JavaScript.
Karel4Web
Роботом можно управлять с помощью простых команд, таких как «вперед», «поворот» и т. Д.
Пользователь может написать программу javascript для управления роботом, которая затем выполняет функцию eval () javascripts, чтобы робот двигался.
Проблема в том, что я хочу, чтобы робот двигался медленно, чтобы вы могли видеть, что он делает, и чтобы вы могли выделить текущую строку кода в редакторе.
Текущий метод: синтаксический анализ
На данный момент я решил эту проблему (в автономной версии), проанализировав каждую строку в текстовой области, а затем построив стек действий, которые затем выполняются один за другим с помощью window.setTimeout. Но это, конечно, ограничено, потому что мне приходится писать код синтаксического анализа для каждого маленького проекта языка JavaScript, который очень трудоемок и подвержен ошибкам.
Некоторая дополнительная информация к этому:
Версия для разбора: http://abi -physik.de / _niki2 / niki.php
Разбор версии js кода: http://abi -physik.de / _niki2 / js / niki.js
Важные функции находятся внизу скрипта: run (), execute ()
В настоящее время я построчно анализирую пользовательский скрипт и добавляю действия в стек. Если синтаксический анализатор обнаружит «если», он начнет новый стек и добавит все действия в этот стек. если синтаксический анализатор затем встречает «}», он закроет стек «if» и продолжит добавлять действия в базовый стек.
Есть идеи улучшить это?