Commit graph

15 commits

Author SHA1 Message Date
ad80ff8f85 Remove dead code 2022-02-08 21:42:54 +01:00
db0fb2aee4 expr: Make body objects refcounted
We'll soon need this, once we implement function definitions
2022-01-22 17:16:28 +01:00
d81bef9184 parser/tokenizer: Save textual data as refcounted strings
This avoids creating refcounted strings during evaluation and makes it
easier to use the same parsed string in multiple places (should be
useful once we implement functions).
2022-01-18 21:18:27 +01:00
ae45aeebe2 parser+expr: Handle blank identifier (_) 2022-01-08 23:20:29 +01:00
50cd2c18d2 expr+parser: Restrict what an assignable can be
If you assign into a member access (`foo.bar = baz` or `foo@bar = baz`), it
is no longer permitted that the LHS of the at/dot is an arbitrary
assignable. It now must be a variable, at or dot. This disallows some silly
constructs (e.g. `[foo]@bar = baz`), increases the similarity to function
parameters and should make writing the evaluation code for these more easy.
2022-01-08 23:06:22 +01:00
4eea93ff97 Improve AST representation of expansion in assignables / parameters
The previous representation didn't properly model the fact that an
assignable / parameter can only be expanded, if it's a list element. This
now better models this. Other than being more correct, this should also
make evaluating these a bit easier.

While I was at it, I also improved the error message for multiple
expansions on the same level and added tests for these.
2022-01-07 23:08:25 +01:00
92dc89d3ca Move {=>apfl_}print_indented out of expr.c
We'll soon need it elsewhere.
2022-01-02 16:53:26 +01:00
f685214abe Add apfl_string_eq macro
It's easy to forget the `== 0` after the apfl_string_cmp() call, so let's
add a macro that does the job for us.
2022-01-02 16:51:19 +01:00
0995739ca8 Parser: Do a better job at cleaning up temporary allocations
-fsanitize=memory no longer finds any memory leak in the parser test suite.
We don't yet test error cases, but still pretty good :).
2021-12-18 21:42:48 +01:00
4908386435 expr: Also print position on variables and constants 2021-12-17 21:07:45 +01:00
10a99d0b1e expr: Fix silly bug in equality check 2021-12-16 23:42:11 +01:00
808219f9c7 expr: Fix printing assignments 2021-12-15 23:11:54 +01:00
fd3c5702ca expr: More consistent and easier to read printing 2021-12-15 21:47:17 +01:00
ade0972d67 expr: Fix moving listlike structures 2021-12-15 21:47:17 +01:00
d094ed7bd5 Initial commit 2021-12-15 21:47:17 +01:00