mirror of
https://github.com/rui314/chibicc
synced 2025-02-19 23:23:57 +03:00
Recognize wide character literal
For now, L'' is equivalent to ''.
This commit is contained in:
parent
ab4f1e1e19
commit
7746e4ee0b
@ -95,6 +95,9 @@ int main() {
|
||||
of(char), \
|
||||
"sizeof(char)");
|
||||
|
||||
ASSERT(4, sizeof(L'\0'));
|
||||
ASSERT(97, L'a');
|
||||
|
||||
printf("OK\n");
|
||||
return 0;
|
||||
}
|
||||
|
13
tokenize.c
13
tokenize.c
@ -246,8 +246,8 @@ static Token *read_string_literal(char *start) {
|
||||
return tok;
|
||||
}
|
||||
|
||||
static Token *read_char_literal(char *start) {
|
||||
char *p = start + 1;
|
||||
static Token *read_char_literal(char *start, char *quote) {
|
||||
char *p = quote + 1;
|
||||
if (*p == '\0')
|
||||
error_at(start, "unclosed char literal");
|
||||
|
||||
@ -452,11 +452,18 @@ Token *tokenize(File *file) {
|
||||
|
||||
// Character literal
|
||||
if (*p == '\'') {
|
||||
cur = cur->next = read_char_literal(p);
|
||||
cur = cur->next = read_char_literal(p, p);
|
||||
p += cur->len;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Wide character literal
|
||||
if (startswith(p, "L'")) {
|
||||
cur = cur->next = read_char_literal(p, p + 1);
|
||||
p = cur->loc + cur->len;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Identifier or keyword
|
||||
if (is_ident1(*p)) {
|
||||
char *start = p;
|
||||
|
Loading…
x
Reference in New Issue
Block a user