Динамически типизирован.
Есть объекты, функции, строки, инты, даблы.
Встроен или очень облегчён парсенг HTML с выдиранием из него переменных. Например я хочу выдернуть все текстовые строки из указанной колонки таблицы внутри HTML или всю таблицу. При этом в нашем языке пускай появляется объект типа Table, у которого есть наименования колонок и адреса строк (в примере функция «tt» возвращает объект-таблицу).
Встроен многопоточный HTTP-клиент, которым можно качать страницы.
В примере функция parse грузит страницу, получает из неё таблицу (как она адресует таблицу внутри HTML тут не показано), удаляет колонку с именем «column», перебирает 255 ячеек колонки «columnname» и если в ячейке пусто, запихивает туда строку, возвращаемую функцией calc.
Ещё одно требование - чтобы интерпретатор такого языка можно было вкомпилить в приложение на C++ или заюзать в виде библиотеки.
Ну... и кросс-платформенность интерпретатора.
main()
{
parse("http://google.com/");
parse("http://yandex.ru/");
}
parse(URL)
{
html = download(URL);
// tt возвращает таблицу. Таблица - набор строк. Каждая колонка имеет имя.
// Объект-таблица никак не относится к HTML и может быть сформирована искусственно.
// Главное, что у таблицы есть указанные в первой строке данного коммента свойства.
table = tt(html, ttdata);
table.remove(["column"]);
for ( i = 0; i < 255; ++i )
{
x = table["columnname", i]; // may be false.
if ( ! x ) // if this cell DOES NOT exist in table.
{
table["columnname", i] = calc( i, i*2 );
}
}
}
calc(x, y)
{
p = "X=" + x + ", Y=" + y;
return p;
}