| /* Copyright (C) 2000 Free Software Foundation, Inc. */ |
| |
| /* { dg-do run } */ |
| /* { dg-options "-trigraphs" } */ |
| |
| /* Test lexing of numbers. */ |
| |
| extern int puts (const char *); |
| extern void abort (void); |
| #define err(str) do { puts(str); abort(); } while (0) |
| |
| /* Escaped newlines. */ |
| #define foo 12\ |
| 3\ |
| \ |
| 4??/ |
| 5 |
| |
| #if foo != 12345 |
| #error foo |
| #endif |
| |
| int main (int argc, char *argv[]) |
| { |
| double a = 5.; |
| double x = .5; |
| |
| /* Decimal points, including initially and immediately before and |
| after an escaped newline. */ |
| if (a != 5) |
| err ("a"); |
| if (x != .\ |
| 5) |
| err ("x != .5"); |
| x = 25\ |
| .\ |
| 6; |
| if (x != 25.6) |
| err ("x != 25.6"); |
| |
| /* Test exponentials and their signs. A buggy lexer is more likely |
| to fail the compile, but never mind. */ |
| if (250 != 25e+1 || 250 != 25e1 || 250 != 2500e-1) |
| err ("exponentials"); |
| |
| /* Todo: p exponentials, and how to test preprocessing number |
| tokenisation? */ |
| |
| return 0; |
| } |