Commit 4371756f authored by Bruce Momjian's avatar Bruce Momjian

Improve handling of semicolons ending statements.

parent 231e1e70
...@@ -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,12 +223,18 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr); ...@@ -219,12 +223,18 @@ 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 ';' | stmt
{ parsetree = lcons($1, NIL); } { parsetree = lcons($1,NIL); }
| stmt ;
{ parsetree = lcons($1, NIL); }
stmtmulti: stmtmulti stmt ';'
{ $$ = lappend($1, $2); }
| stmtmulti stmt
{ $$ = lappend($1, $2); }
| stmt ';'
{ $$ = lcons($1,NIL); }
; ;
stmt : AddAttrStmt stmt : AddAttrStmt
...@@ -949,14 +959,20 @@ OptStmtList: NOTHING { $$ = NIL; } ...@@ -949,14 +959,20 @@ 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
{ {
$$ = makeNode(Attr); $$ = makeNode(Attr);
......
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