Squirrel (programming language)
Squirrel is a high level imperative, object-oriented programming language, designed to be a lightweight scripting language that fits in the size, memory bandwidth, and real-time requirements of applications like video games. MirthKit, a simple toolkit for making and distributing open source, cross-platform 2D games, uses Squirrel for its platform.[2] It is used extensively by Code::Blocks for scripting and was also used in Final Fantasy Crystal Chronicles: My Life as a King.[3][4] It is also used in Left 4 Dead 2, Portal 2 and Thimbleweed Park for scripted events and in NewDark, an unofficial Thief 2: The Metal Age engine update, to facilitate additional, simplified means of scripting mission events, aside of the regular C scripting.[5] Language features
SyntaxSquirrel uses a C-like syntax, albeit inspired by that of Lua as well.
local function factorial(x) // Getting function which is factorial, then getting value which is x
{
if (x <= 1) { // if x is less than 1
return 1; // then the code will just return 1
}
else { // if that doesn't work
return x * factorial(x-1); // then the code will return x times factorial(x-1)
}
}
function not_a_random_number_generator(max) {
local last = 42;
local IM = 139968;
local IA = 3877;
local IC = 29573;
for(;;) { // loops forever
yield (max * (last = (last * IA + IC) % IM) / IM);
}
}
local randtor = not_a_random_number_generator(100);
for(local i = 0; i < 10; i += 1)
print(">"+resume randtor+"\n");
class BaseVector {
constructor(...)
{
if(vargv.len() >= 3) {
x = vargv[0];
y = vargv[1];
z = vargv[2];
}
}
x = 0;
y = 0;
z = 0;
}
class Vector3 extends BaseVector {
function _add(other)
{
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();
ApplicationsApplications using Squirrel
Games using Squirrel
HistoryThe language was made public in 2003 under the zlib/libpng license.[23] In November 2010, the license was changed to the MIT license to enable the project to be hosted on Google Code.[24][25] It is developed and maintained by Alberto Demichelis. See alsoReferences
External links |