Мне бы хотелось сделать что-то вроде этих двух:
Изобретая по принципу @18: 20, Live ClojureScript Game Editor
Если вы не хотите проверять видео, моя проблема заключается в следующем:
Скажем, у меня был этот код:
....
xs = []
for x in xrange(10):
xs.append(x)
...
Я хотел бы создать среду, где я могу выполнить код, инструкцию для оператора и наблюдать/отслеживать locals/globals по мере их изменения. Возможно, дайте ему список варов, чтобы отслеживать в словарях locals/globals. Подобно прохождению кода и сохранению информации о состоянии.
Оптимально я хотел бы сохранить каждое состояние и связанные с ним контекстные данные (locals/globals), чтобы я мог проверять предикаты для примера.
Я бы хотел сделать что-то вроде примера Binary Victor binarySearch Изобретать по принципу @18: 20
Я понимаю смысл? Мне сложно объяснить текст, но видео показывают, что я хочу попробовать:)
Спасибо за ваше время
Что я пробовал/читал/googled:
-
code.InteractiveConsole
/code.InteractiveInterpreter
- модуль
livecoding
: кажется, работает для чистого функционального/безгодового кода -
exec
/eval
magic: кажется, что я не могу получить как мелкозернистый контроль, как хотелось бы. - модуль
trace
тоже не подходит. - Python eval (компиляция (...), песочница), globals идут в песочнице, если не в def, почему? < - Это близко к тому, что я но он компилирует весь блок строк/кода и запускает его за один шаг. Если бы я мог запускать такой файл, но проверял локали между каждой строкой/оператором.
- запустить исходный код python по строке < - Это не то, что я хочу
- Как Ruby и Python реализуют свои интерактивные консоли? < - В этом разделе предлагается, чтобы я больше смотрел в модуль
code
Мой следующий шаг будет выглядеть в ast
и компилировать код и запускать его поэтапно, но мне действительно нужно какое-то руководство. Должен ли я больше размышлять и inspect
-module??
Я использовал Spin model checker раньше, но он использует свой собственный DSL, и я просто хотел бы сделать моделирование в язык реализации, в данном случае python.
О и BTW Я знаю о проблемах безопасности кода песочницы, но я не пытаюсь создать безопасную среду исполнения, я пытаюсь создать очень интерактивную среду, нацеленную на грубую проверку модели или утверждение предиката, например.