System Style
The bootstrap styles, applied directly by the virtual machine or endorsed standard library.
Author
Leslie Schultz
Todd L Smith
Entries
The characters and whitespace that define the boundaries and sections of an Avail code block. Note that Avail block delimiters ( and ) are not usually part of an enveloping expression; this contrasts with other programming languages that require parentheses around an if condition and/or braces around the then block. In these languages, the delimiters are part of the expression itself. In Avail, certain contexts may accept either a single compact expression or an entire delimited block to evaluate to a single value, so the delimiters are always interpreted as part of the contents, and not part of the context.
The characters and whitespace that signal a method is being defined, excluding the method name and definition block.
The code establishing a method name, or identifying the structure of a method call within a string literal used as part of a method name (i.e. method name metacharacters). In Avail code, methods may be named using any string- or atom-valued expression. In practice, it would make little sense to style an expression or block used to calculate a method name in a special way just because it is used inline in a method definition, so for the purposes of styling, only string literals, atom literals, atom creation sends that embed a string literal, and uses of single string or atom variables or constants will be classified this way. When a lexical element is classified as a METHOD_NAME, that style is applied to all characters that are outside the string literal AND all method name metacharacters that are inside the string literal, including the meta-escape-character ` but not the characters being escaped.
The name of a parameter being declared. Does not include its type or value.
The usage of a parameter.
The elements of a method name that indicate that method is being called, but not any arguments being passed.
The elements of a macro name that indicate that macro is being called, but not any arguments being passed.
The type annotation within a definition, whenever the defined element is phrase-valued.
The header keywords that appear in the header of a module.
The entire module header, including whitespace and comments.
A module entry point, i.e., a string literal within a module header Entries section.
Documentation blocks, including delimiters and documentation tag contents.
The name of a module constant at its definition site.
A use of a module constant.
The name of a module variable at its definition site.
A use of a module variable.
The name of a primitive failure reason constant at its definition site.
A use of a primitive failure reason constant.
The name of a local constant at its definition site.
A use of a local constant.
The name of a local variable at its definition site.
A use of a local variable.
The label that identifies the enclosing continuation.
A string literal, excluding quotation marks around it. Does not include escape sequences.
A string escape sequence, including both the escape character \ and the character(s) that follow it that are being escaped. All escape sequences are styled similarly, even \\ and \", which serve to mark the escape character \ and the delimiter " as actual characters within the string. Also used for delimiting quotes.
A numeric literal, including digits, punctuation, and numeric control characters that indicate base or format (such as 0x, f, e, etc.).
A boolean literal (true or false).
A character literal, including delimiters.
An atom literal, including delimiters. May be overridden if more contextual information is available about the atom's function, e.g., if it serves as a method name, object type field, etc.
A literal of some other Avail datatype than string, number, boolean, character, or atom.
The characters and whitespace that signal a grammatical restriction is being defined for a method or macro, excluding the name and definition block.
The characters and whitespace that signal a special object is being bound or accessed, excluding any literals (like name or ordinal).
The optional primitive name in a block.
The return value of a block.