diff options
| author | Louis Burda <quent.burda@gmail.com> | 2023-07-25 05:20:54 +0200 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2023-07-25 05:20:54 +0200 |
| commit | 41760436d528552d64122bb0c837f4d8274a0bdd (patch) | |
| tree | e8acbd7bb0663f1c76bb6a490c37c7e6338613ba /asm.c | |
| parent | f621bed8f9bf20eca167d7cfa40840992c26da09 (diff) | |
| download | tis100-41760436d528552d64122bb0c837f4d8274a0bdd.tar.gz tis100-41760436d528552d64122bb0c837f4d8274a0bdd.zip | |
Fix label_map case insensitivity and allow numbers in label names
Diffstat (limited to 'asm.c')
| -rw-r--r-- | asm.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -6,7 +6,9 @@ #include <string.h> #include <stdint.h> -#define NAMEALPH "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_" +#define TEXTALPH "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_" +#define NUMALPH "0123456789" +#define NAMEALPH TEXTALPH NUMALPH #define WHITESPACE " \t\v\r\n," enum asm_tok { @@ -178,14 +180,16 @@ tok_next(struct asm_tokenizer *tok) } else if (*s == '#') { tok->off += strlen(tok->linebuf + tok->off); return TOK_COMMENT; - } else if (len && strspn(s, NAMEALPH) == len-1 && s[len-1] == ':') { + } else if (len && strchr(TEXTALPH, *s) + && strspn(s, NAMEALPH) == len-1 && s[len-1] == ':') { s[len-1] = '\0'; return TOK_LABEL; } else if (*s == 'X' && atoi(s+1) > 0) { return TOK_XPOS; } else if (*s == 'Y' && atoi(s+1) > 0) { return TOK_YPOS; - } else if (strspn(s, NAMEALPH) == strlen(s)) { + } else if (strchr(TEXTALPH, *s) + && strspn(s, NAMEALPH) == strlen(s)) { return TOK_NAME; } else { die("load: line %lu, invalid token '%s'", tok->lineno, s); |
