Reserved keywords and tokens

These are the keywords that are reserved by the language, i.e. they can't be used by any script defined identifiers. Remember that the host application may reserve additional keywords that are specific to that application.

`and
abstract*
auto
bool
break
case
cast
catch
class
const
continue
default
do
`

`double
else
enum
explicit*
external*
false
final*
float
for
from*
funcdef
function*
get*
`

`if
import
in
inout
int
interface
int8
int16
int32
int64
is
mixin
namespace
`

`not
null
or
out
override*
private
property*
protected
return
set*
shared*
super*
switch
`

`this*
true
try
typedef
uint
uint8
uint16
uint32
uint64
void
while
xor
`

* Not really a reserved keyword, but is recognized by the compiler as a built-in keyword.

These are the non-alphabetical tokens that are also used in the language syntax.

`* ** / % + - <= < >= > (` | `) == != ? : = += -= *= /= %=` | `**= ++ -- & , { } ; | ^` | `~ << >> >>> &= |= ^= <<= >>= >>>=` | `. && || ! [ ] ^^ @ !is ::`

Other than the above tokens there are also numerical, string, identifier, and comment tokens.

    123456789
    123.123e123
    123.123e123f
    0x1234FEDC
    0d123987
    0o1276
    0b1010
    'abc'
    "abc"
    """heredoc"""
    _Abc123
    //
    /*
    */

The characters space (32), tab (9), carriage return (13), line feed (10), and the UTF8 byte-order-mark (U+FEFF) are all recognized as whitespace.