Squirrel (с англ. — «белка») — интерпретируемый язык программирования, разработанный специально для использования в качестве скриптового языка в приложениях реального времени, таких как компьютерные игры. Является свободно распространяемым, с открытыми исходными текстами.
Squirrel | |
---|---|
Класс языка | мультипарадигменный |
Тип исполнения | интерпретируемый, JIT |
Появился в | 2003 |
Автор | Альберто Демичелис |
Выпуск | 3.2 (10 февраля 2022; 3 месяца назад (2022-02-10)) |
Испытал влияние | Lua, Python, Javascript, C++ |
Лицензия | Лицензия zlib/libpng |
Сайт | squirrel-lang.org |
Squirrel представляет собой язык с динамическим определением типов данных — тип переменной определяется значением, которое она хранит в данный момент времени и может меняться при присваивании нового значения. Все значения в Squirrel могут храниться в переменных, использоваться в качестве аргументов при вызове функций и возвращаться в виде результата их выполнения.
Значения в Squirrel могут быть следующих типов:
Вычисление факториала
function factorial(x)
{
if (x == 0)
{
return 1;
}
return x * factorial(x - 1);
}
Генератор случайных чисел:
function gen_random(max)
{
local last = 42;
local IM = 139968;
local IA = 3877;
local IC = 29573;
for (;;) // бесконечный цикл
{
yield (max * (last = (last * IA + IC) % IM) / IM);
}
}
local randtor = gen_random(100);
for (local i = 0; i < 10; i++)
print(">" + resume randtor + "\n");
Классы и наследование:
class BaseVector
{
constructor(x, y, z)
{
this.x = x;
this.y = y;
this.z = z;
}
x = 0;
y = 0;
z = 0;
}
class Vector3 extends BaseVector
{
function _add(other) // перегрузка оператора '+', см. подробности http://www.squirrel-lang.org/squirreldoc/reference/language/metamethods.html
{
if (other instanceof ::Vector3)
return ::Vector3(x + other.x, y + other.y, z + other.z);
else
throw "wrong parameter";
}
function Print()
{
::print(x + ", " + y + ", " + z + "\n");
}
}
local v0 = Vector3(1, 2, 3);
local v1 = Vector3(11, 12, 13);
local v2 = v0 + v1;
v2.Print();
Исходный код компилируется в байт-код, который впоследствии выполняется на виртуальной машине. Для задач, критичных по времени, имеется JIT-компилятор.
![]() Языки программирования | |
---|---|
| |
|