| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- .. _lexical_structure:
- =================
- Lexical Structure
- =================
- .. index:: single: lexical structure
- -----------
- Identifiers
- -----------
- .. index:: single: identifiers
- Identifiers start with an alphabetic character or the symbol '_' followed by any number
- of alphabetic characters, '_' or digits ([0-9]). Squirrel is a case sensitive language
- meaning that the lowercase and uppercase representation of the same alphabetic
- character are considered different characters. For instance, "foo", "Foo" and "fOo" are
- treated as 3 distinct identifiers.
- -----------
- Keywords
- -----------
- .. index:: single: keywords
- The following words are reserved and cannot be used as identifiers:
- +------------+------------+-----------+------------+------------+-------------+
- | base | break | case | catch | class | clone |
- +------------+------------+-----------+------------+------------+-------------+
- | continue | const | default | delete | else | enum |
- +------------+------------+-----------+------------+------------+-------------+
- | extends | for | foreach | function | if | in |
- +------------+------------+-----------+------------+------------+-------------+
- | local | null | resume | return | switch | this |
- +------------+------------+-----------+------------+------------+-------------+
- | throw | try | typeof | while | yield | constructor |
- +------------+------------+-----------+------------+------------+-------------+
- | instanceof | true | false | static | __LINE__ | __FILE__ |
- +------------+------------+-----------+------------+------------+-------------+
- Keywords are covered in detail later in this document.
- -----------
- Operators
- -----------
- .. index:: single: operators
- Squirrel recognizes the following operators:
- +----------+----------+----------+----------+----------+----------+----------+----------+
- | ``!`` | ``!=`` | ``||`` | ``==`` | ``&&`` | ``>=`` | ``<=`` | ``>`` |
- +----------+----------+----------+----------+----------+----------+----------+----------+
- | ``<=>`` | ``+`` | ``+=`` | ``-`` | ``-=`` | ``/`` | ``/=`` | ``*`` |
- +----------+----------+----------+----------+----------+----------+----------+----------+
- | ``*=`` | ``%`` | ``%=`` | ``++`` | ``--`` | ``<-`` | ``=`` | ``&`` |
- +----------+----------+----------+----------+----------+----------+----------+----------+
- | ``^`` | ``|`` | ``~`` | ``>>`` | ``<<`` | ``>>>`` | | |
- +----------+----------+----------+----------+----------+----------+----------+----------+
- ------------
- Other tokens
- ------------
- .. index::
- single: delimiters
- single: other tokens
- Other significant tokens are:
- +----------+----------+----------+----------+----------+----------+
- | ``{`` | ``}`` | ``[`` | ``]`` | ``.`` | ``:`` |
- +----------+----------+----------+----------+----------+----------+
- | ``::`` | ``'`` | ``;`` | ``"`` | ``@"`` | |
- +----------+----------+----------+----------+----------+----------+
- -----------
- Literals
- -----------
- .. index::
- single: literals
- single: string literals
- single: numeric literals
- Squirrel accepts integer numbers, floating point numbers and string 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 |
- +-------------------------------+------------------------------------------+
- Pesudo BNF
- .. productionlist::
- IntegerLiteral : [1-9][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
- -----------
- .. index:: single: 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.
- A comment can be ``/*`` (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
- */
- A comment can also be ``//`` (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
- The character ``#`` is an alternative syntax for single line comment.::
- # this is also a single line comment.
- This to facilitate the use of squirrel in UNIX-style shell scripts.
|