Package-level declarations

Types

Link copied to clipboard

An A_Phrase is generally produced when the AvailCompiler parses source code of an A_Module. Avail defines a variety of phrases, which are implemented by the subclasses of PhraseDescriptor. A_Phrase is a sub-interface of A_BasicObject, and defines the operations that phrases implement.

Link copied to clipboard

My instances represent assignment statements.

Link copied to clipboard

My instances represent occurrences of blocks (functions) encountered in code.

Link copied to clipboard

My instances represent variable and constant declaration statements. There are several kinds of declarations, some with initializing expressions and some with type expressions.

Link copied to clipboard

My instances adapt expressions to be statements. The two currently supported examples are ⊤-value message sends and assignments.

Link copied to clipboard

My instances represent a sequence of phrases to be treated as statements, except the first one. All phrases are executed, and all results except the one from the first phrase are discarded. The first-of-sequence phrase's effective value is the value produced by the first phrase.

Link copied to clipboard

My instances represent phrases which will generate tuples directly at runtime.

Link copied to clipboard

My instances are occurrences of literals parsed from Avail source code. At the moment only strings and non-negative numbers are supported.

Link copied to clipboard

A macro substitution phrase represents the result of applying a macro to its argument expressions to produce an output phrase.

Link copied to clipboard

My instances represent a parsing marker that can be pushed onto the parse stack. It should never occur as part of a composite phrase, and is not capable of emitting code.

Link copied to clipboard

My instances represent phrases which will generate permuted tuples at runtime. The elements still have to be generated in their lexical order, but an L1Operation.L1Ext_doPermute changes their order while they're still on the stack (before being made into a tuple or passed as the top level arguments in a send).

Link copied to clipboard
abstract class PhraseDescriptor : Descriptor

I'm used to implement the abstract notion of phrases. All concrete phrase kinds are below me in the hierarchy.

Link copied to clipboard

My instances represent a reference-taking expression. A variable itself is to be pushed on the stack. Note that this does not work for arguments or constants or labels, as no actual variable object is created for those.

Link copied to clipboard

My instances represent invocations of multi-methods in Avail code.

Link copied to clipboard

My instances adapt a sequence of statements, the last one potentially producing a non-⊤ value, as an expression. The two currently supported examples are ⊤-value message sends and assignments.

Link copied to clipboard

My instances represent a sequence of phrases to be treated as statements, except possibly the last one.

Link copied to clipboard

My instances represent phrases which are elements of recursive list phrases holding arguments to a (super) send phrase.

Link copied to clipboard

My instances represent the use of some declaration.