squirrel programming language by nandini bhatta cs537 summer 2008
Post on 21-Dec-2015
220 views
TRANSCRIPT
![Page 1: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/1.jpg)
Squirrel Programming Language
By
Nandini Bhatta
CS537 Summer 2008
![Page 2: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/2.jpg)
Contents
Introduction Features Development State Keywords & Operators Data types Functions, Class &
Class instance Variables Local & Global
variables….
Squirrel statements Function declaration Class declaration Array Constructor Groovy Vs Squirrel Syntax Comparision Examples Work in progress References
![Page 3: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/3.jpg)
Introduction
Started in the year 2003 High level OO programming language Light weight programming language featuring higher-
order functions, classes/inheritance Powerful scripting tool that fits in the size, memory
bandwidth Real-time requirements of applications like games
It has a C-like syntax
![Page 4: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/4.jpg)
Features
Open Source Inheritance Exception Handling Polymorphism Compiles on both 32-bit & 64-bit architectures Tail Recursion Dymanic Typing Automatic memory management
![Page 5: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/5.jpg)
Development State
Two versions : 1.01 & 2.2.1
The current stable release is 2.2.1
It can be Compiled and run on Windows and Linux
Squirrel is known to run also on MacOS X, GameCube, PSP and XBOX
![Page 6: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/6.jpg)
Keywords & Operators
Similar to keywords & operators in Java
Keyword examples : case, catch, class, constructor, parent, yield, while, return, resume, null default, delegate, delete, else, enum, switch, true, false, throw, try….
Operators examples : ! ,!=, ||, ==, &&, <=, => >, + +,/ , /=, *, *=, %, %=, ++, --, <-, =, &, ^………
![Page 7: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/7.jpg)
Data types
Squirrel is a dynamically typed language so variables have no types
They refer to a value that does not have a type
Squirrel basic types include integer, float, string, null, table, array, function, generator, class, instance, Boolean
![Page 8: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/8.jpg)
Functions, Class & Class instance
Functions similar to those in C language Classes created through class expression or class
statement. Class members are inherited from another class
object at creation time. After creation, members can be added until an
instance of the class is created.
![Page 9: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/9.jpg)
Variables
Two types of variables in squirrel : local and global variables.
Global variables stored in tables and hence referred to as table slots
![Page 10: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/10.jpg)
Local & Global variables…. Squirrel first checks if an identifier is local variable (function arguments) If not it checks if it is a member of the environment object (this) For example :
function testy(arg){local a=10;print(a);return arg;}
will access to local variable 'a' and prints 10.
function testy(arg){local a=10;return arg+foo;}
In this case ’foo’ is treated as ‘this.foo’
![Page 11: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/11.jpg)
Global variables
Global variables are stored in root table
Environment object is the root table
To explicitly access global table from another scope, the slot name must be pre fixed with ‘::’
![Page 12: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/12.jpg)
Example: Accessing global variable
To access global variable ‘foo’
function testy(arg)
{
local a=10;
return arg +::foo;
}
![Page 13: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/13.jpg)
Squirrel statements
Squirrel program is a simple sequence of statements
Squirrel statements are similar to C statements such as assignment, function calls, program flow control structures etc.
Statements can be separated with new lines or using ‘;’
stats := stat [';'|'\n'] stats
![Page 14: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/14.jpg)
Function declaration
Syntax:funcname := id [ '::' id]
stat:= 'function' id [ '::' id]+ '(' args ')'[ ':' '(' args ')'] stat
Example:T <- { }
function T::ciao(a,b,c)
{
return a+b-c;
}
![Page 15: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/15.jpg)
Class declaration
To create a new class :
Syntax:memberdecl : = id '=' exp [ ';'] | '[ ' exp ']' '=' exp [ ';'] |
functionstat | 'constructor' stat:= 'class' derefexp ['extends' derefexp] '{'
[memberdecl]
'}‘
![Page 16: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/16.jpg)
contd…
Example:
class Foo {//constructorconstructor(a){testy = ["stuff",1,2,3];}//member functionfunction PrintTesty(){foreach(i,val in testy){::print("idx = "+i+" = "+val+" \n");}}//propertytesty = null;}
![Page 17: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/17.jpg)
Array Constructor
Syntax:
exp := ‘[’ [explist] ‘]’ Example:
a <- [ ] //creates an empty array
Arrays can be initialized with values during the construction
Example:
a <- [1,"string!",[ ],{ }] //creates an array with 4 elements
![Page 18: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/18.jpg)
Groovy Vs Squirrel
Both are object oriented and dynamic languages.
Both can be used as a Scripting Language for the Java Platform.
Groovy syntax is similar to Java where as Squirrel syntax is similar to C.
![Page 19: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/19.jpg)
Syntax Comparision
The following presents a side-by-side comparison of Groovy
with Squirrel:
Example 1:Print Statement:
Groovy:
println "hello world"
Squirrel:
Local a= “hello world”;
Print (a) ;
![Page 20: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/20.jpg)
Example 2
Groovy:
def x = 1..10
x.each{println it}
Squirrel:
local a=0;
do
{
print(a+"\n");
a+=1;
} while(a>10
![Page 21: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/21.jpg)
Example 3
Groovy:if (a>b) { assert c == a-bprintln c} else{assert c == b-aprintln c}
Squirrel:if(a>b){c= a-b;print (c);}else{c=b-a;Print (c);}
![Page 22: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/22.jpg)
Inheritance Example
class Foo {function DoSomething() {::print("I'm the base");}};class SuperFoo extends Foo {//overridden methodfunction DoSomething() {//calls the base method::Foo.DoSomething();::print("I'm doing something");}}
![Page 23: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/23.jpg)
Work in progress
Comparision with Groovy and Java
Exploring Squirrel with game programming
Exploring Squirrel SQL database
![Page 24: Squirrel Programming Language By Nandini Bhatta CS537 Summer 2008](https://reader033.vdocuments.mx/reader033/viewer/2022051619/56649d6a5503460f94a47c50/html5/thumbnails/24.jpg)
References
www.squirrel-lang.org/doc/squirrel2.pdf
www.wikipedia.org
www.sourceforge.net
www.experiencefestival.com/squirrel_programming_language_-_syntax