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