Currently, tokens beginning with a [ or ] character are completely
ignored, which forbids a macro from beginning with these characters.
Specifically, a macro can be declared eg. as `%[x { ... }` but cannot be
dereferenced as `[x`.
This patch only ignores these tokens if they have a length of 1;
otherwise the switch falls through to the default case.
---
I noticed this bug from a note in this post: https://cybre.space/@wim_v12e/108425428588139783
src/uxnasm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/uxnasm.c b/src/uxnasm.c
index b4243d6..e5e6a35 100644
--- a/src/uxnasm.c+++ b/src/uxnasm.c
@@ -343,8 +343,8 @@ parse(char *w, FILE *f)
while((c = w[++i]))
if(!writebyte(c)) return 0;
break;
- case '[': break; /* ignored */- case ']': break; /* ignored */+ case '[': if (slen(w) == 1) break; /* else FALLTHROUGH */+ case ']': if (slen(w) == 1) break; /* else FALLTHROUGH */ default:
/* opcode */
if(findopcode(w) || scmp(w, "BRK", 4)) {
--
2.36.1
uxn/patches/.build.yml: SUCCESS in 1m0s
[(uxnasm) only ignore [ or ] if it is a whole token][0] from [phoebos][1]
[0]: https://lists.sr.ht/~rabbits/public-inbox/patches/32778
[1]: mailto:ben@bvnf.space
✓ #774797 SUCCESS uxn/patches/.build.yml https://builds.sr.ht/~rabbits/job/774797