Commit e9dd03c0 authored by Tom Lane's avatar Tom Lane

Minor code cleanups in pgbench expression support.

Get rid of unnecessary expr_yylex declaration (we haven't supported
flex 2.5.4 in a long time, and even if we still did, the declaration in
pgbench.h makes this one unnecessary and inappropriate).  Fix copyright
dates, improve some layout choices, etc.
parent 2c33e0fb
......@@ -4,7 +4,7 @@
* exprparse.y
* bison grammar for a simple expression syntax
*
* Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*-------------------------------------------------------------------------
......@@ -36,9 +36,11 @@ static PgBenchExpr *make_op(char operator, PgBenchExpr *lexpr,
%type <expr> expr
%type <ival> INTEGER
%type <str> VARIABLE
%token INTEGER VARIABLE
%token CHAR_ERROR /* never used, will raise a syntax error */
/* Precedence: lowest to highest */
%left '+' '-'
%left '*' '/' '%'
%right UMINUS
......
......@@ -4,7 +4,7 @@
* exprscan.l
* a lexical scanner for a simple expression syntax
*
* Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*-------------------------------------------------------------------------
......@@ -17,10 +17,6 @@ static int yyline = 0, yycol = 0;
static YY_BUFFER_STATE scanbufhandle;
static char *scanbuf;
static int scanbuflen;
/* flex 2.5.4 doesn't bother with a decl for this */
int expr_yylex(void);
%}
%option 8bit
......@@ -32,7 +28,6 @@ int expr_yylex(void);
%option warn
%option prefix="expr_yy"
non_newline [^\n\r]
space [ \t\r\f]
%%
......@@ -44,15 +39,24 @@ space [ \t\r\f]
"%" { yycol += yyleng; return '%'; }
"(" { yycol += yyleng; return '('; }
")" { yycol += yyleng; return ')'; }
:[a-zA-Z0-9_]+ { yycol += yyleng; yylval.str = pg_strdup(yytext + 1); return VARIABLE; }
[0-9]+ { yycol += yyleng; yylval.ival = strtoint64(yytext); return INTEGER; }
:[a-zA-Z0-9_]+ {
yycol += yyleng;
yylval.str = pg_strdup(yytext + 1);
return VARIABLE;
}
[0-9]+ {
yycol += yyleng;
yylval.ival = strtoint64(yytext);
return INTEGER;
}
[\n] { yycol = 0; yyline++; }
{space} { yycol += yyleng; /* ignore */ }
{space}+ { yycol += yyleng; /* ignore */ }
. {
yycol += yyleng;
fprintf(stderr, "unexpected character '%s'\n", yytext);
fprintf(stderr, "unexpected character \"%s\"\n", yytext);
return CHAR_ERROR;
}
%%
......@@ -64,7 +68,6 @@ yyerror(const char *message)
* so the interesting location information is the column number */
fprintf(stderr, "%s at column %d\n", message, yycol);
/* go on to raise the error from pgbench with more information */
/* exit(1); */
}
/*
......
......@@ -2,7 +2,7 @@
*
* pgbench.h
*
* Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
* Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*-------------------------------------------------------------------------
......@@ -18,7 +18,6 @@ typedef enum PgBenchExprType
ENODE_OPERATOR
} PgBenchExprType;
struct PgBenchExpr;
typedef struct PgBenchExpr PgBenchExpr;
struct PgBenchExpr
......@@ -53,4 +52,4 @@ extern void expr_scanner_finish(void);
extern int64 strtoint64(const char *str);
#endif
#endif /* PGBENCH_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment