This part of the document describes the syntax and semantics of the language.
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]*
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.
Squirrel recognizes the following operators:
! | != | || | == | && | <= | => | > |
+ | += | - | -= | / | /= | * | *= |
% | %= | ++ | -- | <- | = | & | ^ |
| | ~ | >> | << | >>> |
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:= '@''"'[.]* '"'
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