1. Имеющий реализацию интерпретатора на Java.
2. Парсинг исходного кода в runtime'е, а не предварительно.
3. Локоничный.
4. Расширяемый словарь.
5. Возможность захватывать состояние выполнения... мммм.. как это по-русски.. continuationы.
Это может быть что угодно, функциональный, императивный, декларативный, rewriting engine, macro и.д.
Пример псевдокода, который должен писаться на целевом языке не намного более длиннее чем это:
При этом, в момент вызова WaitEvent выполнение скрипта должно прерваться с сохранением состояния, чтобы я дальше мог продолжить выполнение после WaitEvent. Как это предполагается использовать из Java (типа того):
Loop:
T = GetCurrentTemperature
State = AccordingToMode ( If (T < REQUIRED_T, On, Off) )
SetDeviceState ("HeaterDevice", State)
WaitEvent (Polled("TemperatureDevice"), ModeChange)
Script script = Script.prepare (scriptSource);
ScriptYield yield = script.run ();
eventManager.addPendingScript (yield.getScriptState(), yield.getResult());
а где-то позже, может быть очередное:
ScriptYield yield = scriptState.continue ();
Я не много хочу? :)
Update: Groovy не поддерживает cont-ions, jpython из-за отступов не получится никуда встроить толком, jruby не поддерживает (fiber в виде нитей не канает)... ищем дальше
Update: По результатам подошел TermWare.