From f3acae4d7c0868869eb29ab7cf885dab0ae55bd7 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Fri, 12 Feb 1993 07:36:00 +0000 Subject: (yylex): For wide char constant, use wchar_type_node. Swallow any preprocessing number as a (possibly erroneous) number. From-SVN: r3464 --- gcc/c-lex.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'gcc/c-lex.c') diff --git a/gcc/c-lex.c b/gcc/c-lex.c index d818f33..043e67c 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -1279,7 +1279,7 @@ yylex () } else if (base <= 10) { - if ((c&~040) == 'E') + if (c == 'e' || c == 'E') { base = 10; floatflag = AFTER_POINT; @@ -1411,7 +1411,9 @@ yylex () break; } /* Note: garbage_chars is -1 if first char is *not* garbage. */ - while (isalnum (c)) + while (isalnum (c) || c == '.' || c == '_' + || (!flag_traditional && (c == '+' || c == '-') + && (p[-1] == 'e' || p[-1] == 'E'))) { if (p >= token_buffer + maxtoken - 3) p = extend_token_buffer (p); @@ -1459,10 +1461,14 @@ yylex () } else { - if (isalnum (c)) + if (isalnum (c) || c == '.' || c == '_' + || (!flag_traditional && (c == '+' || c == '-') + && (p[-1] == 'e' || p[-1] == 'E'))) { error ("garbage at end of number"); - while (isalnum (c)) + while (isalnum (c) || c == '.' || c == '_' + || (!flag_traditional && (c == '+' || c == '-') + && (p[-1] == 'e' || p[-1] == 'E'))) { if (p >= token_buffer + maxtoken - 3) p = extend_token_buffer (p); @@ -1702,6 +1708,7 @@ yylex () = build_int_2 (result | ~((unsigned HOST_WIDE_INT) ~0 >> (HOST_BITS_PER_WIDE_INT - num_bits)), -1); + TREE_TYPE (yylval.ttype) = integer_type_node; } else { @@ -1722,9 +1729,9 @@ yylex () } #endif yylval.ttype = build_int_2 (result, 0); + TREE_TYPE (yylval.ttype) = wchar_type_node; } - TREE_TYPE (yylval.ttype) = integer_type_node; value = CONSTANT; break; } -- cgit v1.1