summaryrefslogtreecommitdiff
path: root/src/stages/semantic_tokens.rs
Commit message (Collapse)AuthorAge
* Remove semantic::ListLiteral::InvocationBen Bridle2025-11-26
| | | | | | 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).
* Remove string-style argument syntax from error messageBen Bridle2025-10-15
| | | | | | 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).
* Implement new intermediate stageBen Bridle2025-10-14
| | | | | | | | 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.
* Implement lists as a first-class typeBen Bridle2025-10-14
| | | | | | | | | | 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.
* Change string argument syntax to list argument syntaxBen Bridle2025-10-14
| | | | | Changes string arguments from "name" to [name], to prepare for generic lists in the language. Doesn't compile.
* Update wording of syntactic and semantic errorsBen Bridle2025-10-14
|
* Rename labels/sublabels to global/local labelsBen Bridle2025-10-13
| | | | This terminology has been used in the manual for a long time now.
* Fix initial indentation when printing semantic tokensBen Bridle2025-10-13
| | | | | | Al non-macro-definition semantic tokens were being printed starting from indentation level zero, instead of from the provided indentation value.
* Implement first-class string literalsBen Bridle2025-04-26
| | | | | | | | | | | 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".
* Rewrite entire assemblerBen Bridle2025-03-11
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