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.
This commit is contained in:
Tom Lane 2015-03-29 13:06:59 -04:00
parent 2c33e0fbce
commit e9dd03c03a
3 changed files with 19 additions and 15 deletions

View file

@ -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

View file

@ -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); */
}
/*

View file

@ -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 */