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 @@ ...@@ -4,7 +4,7 @@
* exprparse.y * exprparse.y
* bison grammar for a simple expression syntax * 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 * Portions Copyright (c) 1994, Regents of the University of California
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
...@@ -36,9 +36,11 @@ static PgBenchExpr *make_op(char operator, PgBenchExpr *lexpr, ...@@ -36,9 +36,11 @@ static PgBenchExpr *make_op(char operator, PgBenchExpr *lexpr,
%type <expr> expr %type <expr> expr
%type <ival> INTEGER %type <ival> INTEGER
%type <str> VARIABLE %type <str> VARIABLE
%token INTEGER VARIABLE %token INTEGER VARIABLE
%token CHAR_ERROR /* never used, will raise a syntax error */ %token CHAR_ERROR /* never used, will raise a syntax error */
/* Precedence: lowest to highest */
%left '+' '-' %left '+' '-'
%left '*' '/' '%' %left '*' '/' '%'
%right UMINUS %right UMINUS
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* exprscan.l * exprscan.l
* a lexical scanner for a simple expression syntax * 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 * Portions Copyright (c) 1994, Regents of the University of California
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
...@@ -17,10 +17,6 @@ static int yyline = 0, yycol = 0; ...@@ -17,10 +17,6 @@ static int yyline = 0, yycol = 0;
static YY_BUFFER_STATE scanbufhandle; static YY_BUFFER_STATE scanbufhandle;
static char *scanbuf; static char *scanbuf;
static int scanbuflen; static int scanbuflen;
/* flex 2.5.4 doesn't bother with a decl for this */
int expr_yylex(void);
%} %}
%option 8bit %option 8bit
...@@ -32,7 +28,6 @@ int expr_yylex(void); ...@@ -32,7 +28,6 @@ int expr_yylex(void);
%option warn %option warn
%option prefix="expr_yy" %option prefix="expr_yy"
non_newline [^\n\r]
space [ \t\r\f] space [ \t\r\f]
%% %%
...@@ -44,15 +39,24 @@ space [ \t\r\f] ...@@ -44,15 +39,24 @@ space [ \t\r\f]
"%" { yycol += yyleng; return '%'; } "%" { yycol += yyleng; return '%'; }
"(" { yycol += yyleng; return '('; } "(" { 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++; } [\n] { yycol = 0; yyline++; }
{space} { yycol += yyleng; /* ignore */ } {space}+ { yycol += yyleng; /* ignore */ }
. { . {
yycol += yyleng; yycol += yyleng;
fprintf(stderr, "unexpected character '%s'\n", yytext); fprintf(stderr, "unexpected character \"%s\"\n", yytext);
return CHAR_ERROR; return CHAR_ERROR;
} }
%% %%
...@@ -64,7 +68,6 @@ yyerror(const char *message) ...@@ -64,7 +68,6 @@ yyerror(const char *message)
* so the interesting location information is the column number */ * so the interesting location information is the column number */
fprintf(stderr, "%s at column %d\n", message, yycol); fprintf(stderr, "%s at column %d\n", message, yycol);
/* go on to raise the error from pgbench with more information */ /* go on to raise the error from pgbench with more information */
/* exit(1); */
} }
/* /*
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* pgbench.h * 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 * Portions Copyright (c) 1994, Regents of the University of California
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
...@@ -18,7 +18,6 @@ typedef enum PgBenchExprType ...@@ -18,7 +18,6 @@ typedef enum PgBenchExprType
ENODE_OPERATOR ENODE_OPERATOR
} PgBenchExprType; } PgBenchExprType;
struct PgBenchExpr;
typedef struct PgBenchExpr PgBenchExpr; typedef struct PgBenchExpr PgBenchExpr;
struct PgBenchExpr struct PgBenchExpr
...@@ -53,4 +52,4 @@ extern void expr_scanner_finish(void); ...@@ -53,4 +52,4 @@ extern void expr_scanner_finish(void);
extern int64 strtoint64(const char *str); 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