commit 3311ab95d241777836fcd7a0d8c1b44d87db9e0a
parent a555eb8ab253072c0276423c1e8488a3d202c246
Author: m21c <ho*******@gmail.com>
Date: Fri, 27 Jun 2025 18:51:59 +0200
read char-literal
Diffstat:
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/compiler.c b/compiler.c
@@ -1535,15 +1535,21 @@ tokenizestring(Source *source, register int ch)
return source->tok.kind = LINEDELIM;
}
- /* TODO(m21c): read '\''-token as character-literal CHAR */
+ if (ch == '"') {
+ source->tok.u.key = getstringkey(
+ &strings,
+ source->line + source->tok.loc.column,
+ j - source->tok.loc.column
+ );
- source->tok.u.key = getstringkey(
- &strings,
- source->line + source->tok.loc.column,
- j - source->tok.loc.column
- );
+ return source->tok.kind = STRING;
+ }
- return source->tok.kind = STRING;
+ /* @todo read numerical value of character properly
+ * (escape sequences, etc.) */
+ source->tok.type = prim + TUCHAR;
+ source->tok.u.u = source->line[source->tok.loc.column];
+ return source->tok.kind = CHAR;
}
// }}}