Skip to content
Snippets Groups Projects
Commit 4371756f authored by Bruce Momjian's avatar Bruce Momjian
Browse files

Improve handling of semicolons ending statements.

parent 231e1e70
No related branches found
No related tags found
No related merge requests found
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.22 1996/12/17 01:53:29 momjian Exp $ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.23 1996/12/20 20:33:12 momjian Exp $
* *
* HISTORY * HISTORY
* AUTHOR DATE MAJOR EVENT * AUTHOR DATE MAJOR EVENT
...@@ -98,7 +98,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr); ...@@ -98,7 +98,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
AppendStmt *astmt; AppendStmt *astmt;
} }
%type <node> stmt, AddAttrStmt, ClosePortalStmt, %type <node> stmt,
AddAttrStmt, ClosePortalStmt,
CopyStmt, CreateStmt, DefineStmt, DestroyStmt, CopyStmt, CreateStmt, DefineStmt, DestroyStmt,
ExtendStmt, FetchStmt, GrantStmt, ExtendStmt, FetchStmt, GrantStmt,
IndexStmt, MoveStmt, ListenStmt, OptimizableStmt, IndexStmt, MoveStmt, ListenStmt, OptimizableStmt,
...@@ -121,10 +122,12 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr); ...@@ -121,10 +122,12 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
%type <str> privileges, operation_commalist, grantee %type <str> privileges, operation_commalist, grantee
%type <chr> operation %type <chr> operation
%type <list> stmtblock, relation_name_list, OptTableElementList, %type <list> stmtblock, stmtmulti,
relation_name_list, OptTableElementList,
tableElementList, OptInherit, definition, tableElementList, OptInherit, definition,
opt_with, def_args, def_name_list, func_argtypes, opt_with, def_args, def_name_list, func_argtypes,
oper_argtypes, OptStmtList, OptStmtBlock, opt_column_list, columnList, oper_argtypes, OptStmtList, OptStmtBlock, OptStmtMulti,
opt_column_list, columnList,
sort_clause, sortby_list, index_params, sort_clause, sortby_list, index_params,
name_list, from_clause, from_list, opt_array_bounds, nest_array_bounds, name_list, from_clause, from_list, opt_array_bounds, nest_array_bounds,
expr_list, attrs, res_target_list, res_target_list2, expr_list, attrs, res_target_list, res_target_list2,
...@@ -210,7 +213,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr); ...@@ -210,7 +213,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
%left '+' '-' %left '+' '-'
%left '*' '/' %left '*' '/'
%left '|' /* this is the relation union op, not logical or */ %left '|' /* this is the relation union op, not logical or */
%right ';' ':' /* Unary Operators */ %right ':' /* Unary Operators */
%left ';' /* end of statement or natural log */
%nonassoc '<' '>' %nonassoc '<' '>'
%right UMINUS %right UMINUS
%left '.' %left '.'
...@@ -219,14 +223,20 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr); ...@@ -219,14 +223,20 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
%nonassoc REDUCE %nonassoc REDUCE
%% %%
stmtblock: stmt ';' stmtblock stmtblock: stmtmulti
{ parsetree = lcons($1, parsetree); } { parsetree = $1; }
| stmt ';'
{ parsetree = lcons($1, NIL); }
| stmt | stmt
{ parsetree = lcons($1,NIL); } { parsetree = lcons($1,NIL); }
; ;
stmtmulti: stmtmulti stmt ';'
{ $$ = lappend($1, $2); }
| stmtmulti stmt
{ $$ = lappend($1, $2); }
| stmt ';'
{ $$ = lcons($1,NIL); }
;
stmt : AddAttrStmt stmt : AddAttrStmt
| ClosePortalStmt | ClosePortalStmt
| CopyStmt | CopyStmt
...@@ -949,12 +959,18 @@ OptStmtList: NOTHING { $$ = NIL; } ...@@ -949,12 +959,18 @@ OptStmtList: NOTHING { $$ = NIL; }
| '[' OptStmtBlock ']' { $$ = $2; } | '[' OptStmtBlock ']' { $$ = $2; }
; ;
OptStmtBlock: OptimizableStmt OptStmtBlock: OptStmtMulti
{ $$ = $1; }
| OptimizableStmt
{ $$ = lcons($1, NIL); } { $$ = lcons($1, NIL); }
;
OptStmtMulti: OptStmtMulti OptimizableStmt ';'
{ $$ = lappend($1, $2); }
| OptStmtMulti OptimizableStmt
{ $$ = lappend($1, $2); }
| OptimizableStmt ';' | OptimizableStmt ';'
{ $$ = lcons($1, NIL); } { $$ = lcons($1, NIL); }
| OptStmtBlock OptimizableStmt
{ $$ = lappend($1, $2); }
; ;
event_object: relation_name '.' attr_name event_object: relation_name '.' attr_name
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment