From 21c24d8861a00025be2a91906ef5f70417538422 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Wed, 19 Mar 1997 16:57:58 -0500 Subject: [PATCH] (parse_number, yylex), cccp.c (rescan), cpplib.c (parse_number, yylex), cccp.c (rescan), cpplib.c (cpp_get_token): Unless -lang-c89 is specified, allow C9X-style hexadecimal floating-point numbers as preprocessor numbers. From-SVN: r13746 --- gcc/cexp.y | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/cexp.y b/gcc/cexp.y index 18887511fab..2d2d34f8b28 100644 --- a/gcc/cexp.y +++ b/gcc/cexp.y @@ -161,6 +161,9 @@ extern int pedantic; /* Flag for -traditional. */ extern int traditional; +/* Flag for -lang-c89. */ +extern int c89; + #ifndef CHAR_TYPE_SIZE #define CHAR_TYPE_SIZE BITS_PER_UNIT #endif @@ -531,7 +534,7 @@ parse_number (olen) yylval.integer.signedp = UNSIGNED; } else { - if (c == '.' || c == 'e' || c == 'E') + if (c == '.' || c == 'e' || c == 'E' || c == 'p' || c == 'P') yyerror ("Floating point numbers not allowed in #if expressions"); else { char *buf = (char *) alloca (p - lexptr + 40); @@ -834,7 +837,9 @@ yylex () for (namelen = 1; ; namelen++) { int d = tokstart[namelen]; if (! ((is_idchar[d] || d == '.') - || ((d == '-' || d == '+') && (c == 'e' || c == 'E') + || ((d == '-' || d == '+') + && (c == 'e' || c == 'E' + || ((c == 'p' || c == 'P') && ! c89)) && ! traditional))) break; c = d; -- 2.30.2