Skip to main content
Version: 1.0

Syntax

Comments​

Comments can be used to document code. A comment is text that is not executed.

Single-line comments start with two slashes (//). These comments can go on a line by themselves or they can go directly after a line of code.


_10
// This is a comment on a single line.
_10
// Another comment line that is not executed.
_10
_10
let x = 1 // Here is another comment after a line of code.

Multi-line comments start with a slash and an asterisk (/*) and end with an asterisk and a slash (*/):


_10
/* This is a comment which
_10
spans multiple lines. */

Comments may be nested.


_10
/* /* this */ is a valid comment */

Multi-line comments are balanced.


_10
/* this is a // comment up to here */ this is not part of the comment */

Documentation Comments​

Documentation comments (also known as "doc-strings" or "doc-comment") are a special set of comments that can be processed by tools, for example to generate human-readable documentation, or provide documentation in an IDE.

Doc-comments either start with three slashes (///) on each line, or are surrounded by /** and **/.


_10
/// This is a documentation comment for `x`.
_10
/// It spans multiple lines.
_10
_10
let x = 1


_10
/**
_10
This is a documentation comment
_10
which also spans multiple lines.
_10
**/

Identifiers​

Identifiers may start with any upper or lowercase letter (A-Z, a-z) or an underscore (_). This may be followed by zero or more upper and lower case letters, underscores, and numbers (0-9). Identifiers may not begin with a number.


_29
// Valid: title-case
_29
//
_29
PersonID
_29
_29
// Valid: with underscore
_29
//
_29
token_name
_29
_29
// Valid: leading underscore and characters
_29
//
_29
_balance
_29
_29
// Valid: leading underscore and numbers
_29
_8264
_29
_29
// Valid: characters and number
_29
//
_29
account2
_29
_29
// Invalid: leading number
_29
//
_29
1something
_29
_29
// Invalid: invalid character #
_29
_#1
_29
_29
// Invalid: various invalid characters
_29
//
_29
!@#$%^&*

Reserved identifiers​

The following identifiers are reserved, as they are keywords of the language:

  • if, else, while, for, in, as
  • break, continue, return
  • true, false, nil
  • let, var
  • create, destroy, emit
  • fun, pre, post,
  • auth, access
  • self, init
  • contract, event, struct, resource, interface, entitlement, enum, mapping, attachment
  • transaction, prepare, execute
  • switch, case, default
  • import, include
  • require, requires, static, native, pub, priv, try, catch, finally, goto, const, export, throw, throws, where, final, internal, typealias, repeat, guard, is

Conventions​

By convention, variables, constants, and functions have lowercase identifiers; and types have title-case identifiers.

Semicolons​

Semicolons (;) are used as separators between declarations and statements. A semicolon can be placed after any declaration and statement, but can be omitted between declarations and if only one statement appears on the line.

Semicolons must be used to separate multiple statements if they appear on the same line.


_11
// Declare a constant, without a semicolon.
_11
//
_11
let a = 1
_11
_11
// Declare a variable, with a semicolon.
_11
//
_11
var b = 2;
_11
_11
// Declare a constant and a variable on a single line, separated by semicolons.
_11
//
_11
let d = 1; var e = 2