diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-05 13:22:51 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-07 21:02:01 -0700 |
| commit | 1694b992f1834bed9cbceafa795b511ee52efaca (patch) | |
| tree | b144a4906130b7df87a847472e82bc04d242223d /pre-process.c | |
| parent | 930f205a62cd53ecf19d68297895bb4025db28e8 (diff) | |
| download | sparse-dev-1694b992f1834bed9cbceafa795b511ee52efaca.tar.gz | |
Remove TOKEN_FP vs TOKEN_INTEGER distinction, and make numbers be
just TOKEN_NUMBER.
This matches how tokenization is supposed to be done, and simplifies
the code.
Expression evaluation changed to cope with the new rules.
Diffstat (limited to 'pre-process.c')
| -rw-r--r-- | pre-process.c | 40 |
1 files changed, 10 insertions, 30 deletions
diff --git a/pre-process.c b/pre-process.c index c9708c68..72077361 100644 --- a/pre-process.c +++ b/pre-process.c @@ -99,8 +99,8 @@ static struct token *is_defined(struct token *head, struct token *token, struct char *defined = string[lookup_symbol(token->ident, NS_PREPROCESSOR) != NULL]; struct token *newtoken = alloc_token(&token->pos); - token_type(newtoken) = TOKEN_INTEGER; - newtoken->integer = defined; + token_type(newtoken) = TOKEN_NUMBER; + newtoken->number = defined; newtoken->next = next; head->next = newtoken; return next; @@ -144,8 +144,8 @@ static void replace_with_integer(struct token *token, unsigned int val) { char *buf = __alloc_bytes(10); sprintf(buf, "%d", val); - token_type(token) = TOKEN_INTEGER; - token->integer = buf; + token_type(token) = TOKEN_NUMBER; + token->number = buf; } struct token *expand_one_symbol(struct token *parent, struct token *head, struct token *token) @@ -212,7 +212,7 @@ static struct token *dup_token(struct token *token, struct position *streampos, token_type(alloc) = token_type(token); alloc->pos.newline = pos->newline; alloc->pos.whitespace = pos->whitespace; - alloc->integer = token->integer; + alloc->number = token->number; return alloc; } @@ -386,22 +386,12 @@ static struct token *hashhash(struct token *head, struct token *first) int len; switch (token_type(token)) { - case TOKEN_INTEGER: - src = token->integer; - len = strlen(src); - switch (*src) { - case 'o': case 'x': - *p++ = '0'; - len--; - src++; - } - break; case TOKEN_IDENT: len = token->ident->len; src = token->ident->name; break; - case TOKEN_FP: - src = token->fp; + case TOKEN_NUMBER: + src = token->number; len = strlen(src); break; default: @@ -425,19 +415,9 @@ out: case TOKEN_IDENT: newtoken->ident = built_in_ident(buffer); break; - case TOKEN_INTEGER: { - if (buffer[0] == '0') { - switch (buffer[1]) { - case 'x': case 'X': - buffer[0] = 'x'; - break; - case '0' ... '7': - buffer[0] = 'o'; - break; - } - } - newtoken->integer = __alloc_bytes(p - buffer); - memcpy(newtoken->integer, buffer, p - buffer); + case TOKEN_NUMBER: { + newtoken->number = __alloc_bytes(p - buffer); + memcpy(newtoken->number, buffer, p - buffer); break; } } |
