Represents the end-of-file marker for tokenization.
An alphanumeric symbol, such as x, hello, or _QWE_RTY_123.
An operator character, such as +, @, or $, but never multiple characters
like += or |>.
A symbol composed entirely of whitespace (excluding newlines) and/or comments.
A symbol composed of entirely newlines.
JS number or bigint.
Literal, or part of an interpolation block.
A block of code enclosed in (...).
A block of code enclosed in [...].
A block of code enclosed in {...}.
A block of code represented as written at the top-level of a file.
A string with interpolations, the literal bits are string children,
and the interpolated blocks are included as roundblock blocks
(even though they're written as {...}).
Represents an unevaluated function call, .c[0] is the function, .c[1:]
are the code blocks that evaluate to the arguments.
A closed-over lambda function or macro, .c[0] is the call signature,
.c[1] is the body.
A named javascript function or macro. The value is only the string name that it's stored under in the Scheduler, so as to allow the state to be serialized (since JSON can't serialize functions).
An implicit block (what a function gets if it declares a parameter as
@lazy), .v is the closed-over env, .c[0] is the actual body.
Represents a continuation. The value is a copy of the stack at the point at which it was captured, and invoking the continuation restores the stack.
Represents a parsed pattern, for pattern-matching. The value is a Pattern.
A list of values. This is NOT a list literal - those are a squareblock and processed by the builtin patterns.
A mapping of keys to values. The children are pair. This is NOT a map literal - those are a squareblock and processed by the builtin patterns.
A key-value pair in a map. The hash value of this is ignored, since maps are keyed on the key's hash.
An entry of a pattern-matching pattern in the environment's patterns list. The children are the pattern itself, the callable handler that processes the match, a list of types specifying which blocks the pattern applies in, and a number specifying the precedence of the pattern (for sorting, when defining a new pattern).
Represents an environment that variables and patterns can be stored in. The children are a list of parent envs or nil if there's no parent, a map of the variables, and a list of pattern_entry.
Returned by a function to signal its result is a macro body, and should be evaluated again.
Represents a function that should have its return value spliced into the callee's arguments list.
Represents a "generalized lvalue" that can be assigned to. The children are 2 functions that can be called to get or set the value that this reference refers to.
The empty value.