This is mostly a language written because:
- I haven't written a compiler in a while
- I wanted to give it a go in rust :P
- I wanted to give a language with minimal syntax a go
- I like expression-driven languages but don't want to be stuck with FP
- I've gotten interested in Algebraic effects
- Tidy up all imports to use
super -> crate -> ...
- Prevent multiple
Restpatterns from being used inTuples andStructs
This can be acheived by, instead of allowing any item to beRestpattern
only allowing the last item to be one and using anOption<Rest>property
within theStructandTuple. - Merge the
ArrayandTuplepatterns (they're the same at this point...) - We currently only use
Pathnodes for pattern matching, why? - Convert monad nodes and parsing to use Algebraic effects
- f-string support
- I'll need to update how strings are parsed...
- maybe consider having f-strings create templates not strings
if we support string conversion on these, we can solve most
of the standard string injection attacks by not converting to
strings until the last possible second.
- fix all bugs uncovered by property testing (3 so far)
and add equivalent regression tests for each encountered issue. - property testing on AST -> code -> AST round trip
- implement
Displayfor AST - implement generators for ASTs
- add property testing
- implement
- use
nom-language'sprecedenceparser
- add a custom formatting for creating boxes
- pretty printing ASTs (formatting)
- add a custom formatter for indented structures
- printing ASTs as code
- add function calls
- add regression tests for bugs encountered during use (0 so far)
- Ensure docstrings are present on all syntax nodes
- Add simple docstrings to parsers that mention what they parse