From e9dd03c03aeed6486129e3101695b13d469c2985 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 29 Mar 2015 13:06:59 -0400 Subject: [PATCH] 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. --- contrib/pgbench/exprparse.y | 4 +++- contrib/pgbench/exprscan.l | 25 ++++++++++++++----------- contrib/pgbench/pgbench.h | 5 ++--- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/contrib/pgbench/exprparse.y b/contrib/pgbench/exprparse.y index 243c6b9c38..e68631e3e6 100644 --- a/contrib/pgbench/exprparse.y +++ b/contrib/pgbench/exprparse.y @@ -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 %type INTEGER %type VARIABLE + %token INTEGER VARIABLE %token CHAR_ERROR /* never used, will raise a syntax error */ +/* Precedence: lowest to highest */ %left '+' '-' %left '*' '/' '%' %right UMINUS diff --git a/contrib/pgbench/exprscan.l b/contrib/pgbench/exprscan.l index 4c9229cd9c..6e3331d908 100644 --- a/contrib/pgbench/exprscan.l +++ b/contrib/pgbench/exprscan.l @@ -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); */ } /* diff --git a/contrib/pgbench/pgbench.h b/contrib/pgbench/pgbench.h index 128bf110d7..0396e551f2 100644 --- a/contrib/pgbench/pgbench.h +++ b/contrib/pgbench/pgbench.h @@ -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 */