Chapter 2. The language

Squirrel 2.2

Chapter 2. The language

This part of the document describes the syntax and semantics of the language.

Lexical structure

Identifiers

Identifiers start with a alphabetic character or '_' followed by any number of alphabetic characters, '_' or digits ([0-9]). Squirrel is a case sensitive language, this means that the lowercase and uppercase representation of the same alphabetic character are considered different characters. For instance "foo", "Foo" and "fOo" will be treated as 3 distinct identifiers.

          
            id:= [a-zA-Z_]+[a-zA-Z_0-9]*
          
        

Keywords

The following words are reserved words by the language and cannot be used as identifiers:

break case catch class clone continue
const default delegate delete else enum
extends for function if in local
null resume return switch this throw
try typeof while parent yield constructor
vargc vargv instanceof true false static

Keywords are covered in detail later in this document.

Operators

Squirrel recognizes the following operators:

! != || == && <= => >
+ += - -= / /= * *=
% %= ++ -- <- = & ^
| ~ >> << >>>  

Other tokens

Other used tokens are:

{ } [ ] . : :: ' ; " @"  

Literals

Squirrel accepts integer numbers, floating point numbers and stings literals.

34 Integer number(base 10)
0xFF00A120 Integer number(base 16)
0753 Integer number(base 8)
'a' Integer number
1.52 Floating point number
1.e2 Floating point number
1.e-2 Floating point number
"I'm a string" String
@"I'm a verbatim string" String
@" I'm a multiline verbatim string " String
          
            
IntegerLiteral := [0-9]+ | '0x' [0-9A-Fa-f]+ | ''' [.]+ ''' | 0[0-7]+ 
FloatLiteral := [0-9]+ '.' [0-9]+
FloatLiteral := [0-9]+ '.' 'e'|'E' '+'|'-' [0-9]+
StringLiteral:= '"'[.]* '"'
VerbatimStringLiteral:= '@''"'[.]* '"'
		
          
        

Comments

A comment is text that the compiler ignores but that is useful for programmers. Comments are normally used to embed annotations in the code. The compiler treats them as white space.

The /* (slash, asterisk) characters, followed by any sequence of characters (including new lines), followed by the */ characters. This syntax is the same as ANSI C.

/* 
this is
a multiline comment.
this lines will be ignored by the compiler
*/
				
				
				

The // (two slashes) characters, followed by any sequence of characters. A new line not immediately preceded by a backslash terminates this form of comment. It is commonly called a “single-line comment.”

//this is a single line comment. this line will be ignored by the compiler