projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rework compound type handling:
[cparser]
/
token.c
diff --git
a/token.c
b/token.c
index
3289c38
..
0d5e164
100644
(file)
--- a/
token.c
+++ b/
token.c
@@
-109,60
+109,67
@@
void print_token_type(FILE *f, token_type_t token_type)
const symbol_t *symbol = token_symbols[token_type];
if(symbol != NULL) {
const symbol_t *symbol = token_symbols[token_type];
if(symbol != NULL) {
- fp
rintf(f, "%s", symbol->string
);
+ fp
uts(symbol->string, f
);
} else {
if(token_type >= 0 && token_type < 256) {
} else {
if(token_type >= 0 && token_type < 256) {
- fp
rintf(f, "%c", token_type
);
+ fp
utc(token_type, f
);
return;
}
fputs("unknown token", f);
}
}
return;
}
fputs("unknown token", f);
}
}
+symbol_t *get_token_symbol(const token_t *token)
+{
+ return token_symbols[token->type];
+}
+
void print_token(FILE *f, const token_t *token)
{
switch(token->type) {
case T_IDENTIFIER:
void print_token(FILE *f, const token_t *token)
{
switch(token->type) {
case T_IDENTIFIER:
- fprintf(f, "
symbol %s
", token->v.symbol->string);
+ fprintf(f, "
identifier '%s'
", token->v.symbol->string);
break;
case T_INTEGER:
break;
case T_INTEGER:
- fprintf(f, "integer number
%lld
", token->v.intvalue);
+ fprintf(f, "integer number
'%lld'
", token->v.intvalue);
break;
case T_FLOATINGPOINT:
break;
case T_FLOATINGPOINT:
- fprintf(f, "floating
pointer number %LF
", token->v.floatvalue);
+ fprintf(f, "floating
-point number '%LF'
", token->v.floatvalue);
break;
case T_STRING_LITERAL:
fprintf(f, "string \"%s\"", token->v.string.begin);
break;
default:
break;
case T_STRING_LITERAL:
fprintf(f, "string \"%s\"", token->v.string.begin);
break;
default:
+ fputc('\'', f);
print_token_type(f, (token_type_t)token->type);
print_token_type(f, (token_type_t)token->type);
+ fputc('\'', f);
break;
}
}
break;
}
}
-void print_pp_token_type(FILE *f,
preprocessor_token_type_
t token_type)
+void print_pp_token_type(FILE *f,
in
t token_type)
{
{
- if(token_type == TP_EOF) {
+ if
(token_type == TP_EOF) {
fputs("end of file", f);
return;
}
fputs("end of file", f);
return;
}
- if(token_type == TP_ERROR) {
+ if
(token_type == TP_ERROR) {
fputs("error", f);
return;
}
int token_symbols_len = TP_LAST_TOKEN;
fputs("error", f);
return;
}
int token_symbols_len = TP_LAST_TOKEN;
- if(token_type < 0 || token_type >= token_symbols_len) {
+ if
(token_type < 0 || token_type >= token_symbols_len) {
fputs("invalid token", f);
return;
}
const symbol_t *symbol = pp_token_symbols[token_type];
fputs("invalid token", f);
return;
}
const symbol_t *symbol = pp_token_symbols[token_type];
- if(symbol != NULL) {
- fp
rintf(f, "%s", symbol->string
);
+ if
(symbol != NULL) {
+ fp
uts(symbol->string, f
);
} else {
if(token_type >= 0 && token_type < 256) {
} else {
if(token_type >= 0 && token_type < 256) {
- fp
rintf(f, "%c", token_type
);
+ fp
utc(token_type, f
);
return;
}
fputs("unknown token", f);
return;
}
fputs("unknown token", f);
@@
-173,10
+180,10
@@
void print_pp_token(FILE *f, const token_t *token)
{
switch((preprocessor_token_type_t) token->type) {
case TP_IDENTIFIER:
{
switch((preprocessor_token_type_t) token->type) {
case TP_IDENTIFIER:
- fprintf(f, "
symbol %s
", token->v.symbol->string);
+ fprintf(f, "
identifier '%s'
", token->v.symbol->string);
break;
case TP_NUMBER:
break;
case TP_NUMBER:
- fprintf(f, "number
%s
", token->v.string.begin);
+ fprintf(f, "number
'%s'
", token->v.string.begin);
break;
case TP_STRING_LITERAL:
fprintf(f, "string \"%s\"", token->v.string.begin);
break;
case TP_STRING_LITERAL:
fprintf(f, "string \"%s\"", token->v.string.begin);