%type <elist> elist
%type <expr> expr
-%type <ival> INTEGER function
-%type <dval> DOUBLE
+%type <ival> INTEGER_CONST function
+%type <dval> DOUBLE_CONST
%type <str> VARIABLE FUNCTION
-%token INTEGER DOUBLE VARIABLE FUNCTION
+%token INTEGER_CONST DOUBLE_CONST VARIABLE FUNCTION
/* Precedence: lowest to highest */
%left '+' '-'
| expr '*' expr { $$ = make_op(yyscanner, "*", $1, $3); }
| expr '/' expr { $$ = make_op(yyscanner, "/", $1, $3); }
| expr '%' expr { $$ = make_op(yyscanner, "%", $1, $3); }
- | INTEGER { $$ = make_integer_constant($1); }
- | DOUBLE { $$ = make_double_constant($1); }
+ | INTEGER_CONST { $$ = make_integer_constant($1); }
+ | DOUBLE_CONST { $$ = make_double_constant($1); }
| VARIABLE { $$ = make_variable($1); }
| function '(' elist ')' { $$ = make_func(yyscanner, $1, $3); }
;
}
{digit}+ {
yylval->ival = strtoint64(yytext);
- return INTEGER;
+ return INTEGER_CONST;
}
{digit}+(\.{digit}*)?([eE][-+]?{digit}+)? {
- yycolumn += yyleng;
yylval->dval = atof(yytext);
- return DOUBLE;
+ return DOUBLE_CONST;
+ }
+\.{digit}+([eE][-+]?{digit}+)? {
+ yylval->dval = atof(yytext);
+ return DOUBLE_CONST;
}
{alpha}{alnum}* {
yylval->str = pg_strdup(yytext);
{
double dval = pval->u.dval;
Assert(pval->type == PGBT_DOUBLE);
- if (dval < INT64_MIN || INT64_MAX < dval)
+ if (dval < PG_INT64_MIN || PG_INT64_MAX < dval)
{
fprintf(stderr, "double to int overflow for %f\n", dval);
return false;