| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
| |
This variant was never needed or constructed, I would have added it to
match the invocation variants of the block and integer tokens (which do
have a use).
|
| |
|
|
|
|
| |
The string-style argument syntax is no longer supported, it has been
replaced with a list-style syntax (using square brackets instead of
double-quotes).
|
| |
|
|
|
|
|
|
| |
Massive improvement. Label references can be used anywhere in the
program, with the program being assembled repeatedly until all labels
have stabilised. The bytecode stage will just be a tiny stage tacked
onto the end, rather than the old bytecode stage that would resolve
labels and expressions.
|
| |
|
|
|
|
|
|
|
|
| |
Previously, strings were implemented as lists of integers, but there
was no way to create an arbitrary list of integers to pass to a macro
invocation.
This commit extends the []-delimited expression syntax, treating
expressions that contain only integers and invocations as lists of
integers. Strings are implemented as a sub-type of list.
|
| |
|
|
|
| |
Changes string arguments from "name" to [name], to prepare for generic
lists in the language. Doesn't compile.
|
| | |
|
| |
|
|
| |
This terminology has been used in the manual for a long time now.
|
| |
|
|
|
|
| |
Al non-macro-definition semantic tokens were being printed starting
from indentation level zero, instead of from the provided indentation
value.
|
| |
|
|
|
|
|
|
|
|
|
| |
This feature promotes strings to a first-class type in the language.
If a string is passed to an invocation via the new string-type argument,
the string will be passed as a whole value. String arguments can still
be passed to an invocation via an integer-type argument, in which case
they'll be broken apart into individual characters with the macro being
invoked once per character.
String-type macro arguments are declared like "name".
|
|
|
The language is now more general, the code is better structured, error
reporting is more detailed, and many new language features have
been implemented:
- conditional blocks
- first-class strings
- more expression operators
- binary literals
- negative values
- invocations in constant expressions
|