*
*
* 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
* AUTHOR DATE MAJOR EVENT
AppendStmt *astmt;
}
-%type <node> stmt, AddAttrStmt, ClosePortalStmt,
+%type <node> stmt,
+ AddAttrStmt, ClosePortalStmt,
CopyStmt, CreateStmt, DefineStmt, DestroyStmt,
ExtendStmt, FetchStmt, GrantStmt,
IndexStmt, MoveStmt, ListenStmt, OptimizableStmt,
%type <str> privileges, operation_commalist, grantee
%type <chr> operation
-%type <list> stmtblock, relation_name_list, OptTableElementList,
+%type <list> stmtblock, stmtmulti,
+ relation_name_list, OptTableElementList,
tableElementList, OptInherit, definition,
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,
name_list, from_clause, from_list, opt_array_bounds, nest_array_bounds,
expr_list, attrs, res_target_list, res_target_list2,
%left '+' '-'
%left '*' '/'
%left '|' /* this is the relation union op, not logical or */
-%right ';' ':' /* Unary Operators */
+%right ':' /* Unary Operators */
+%left ';' /* end of statement or natural log */
%nonassoc '<' '>'
%right UMINUS
%left '.'
%nonassoc REDUCE
%%
-stmtblock: stmt ';' stmtblock
- { parsetree = lcons($1, parsetree); }
- | stmt ';'
- { parsetree = lcons($1, NIL); }
- | stmt
- { parsetree = lcons($1, NIL); }
+stmtblock: stmtmulti
+ { parsetree = $1; }
+ | stmt
+ { parsetree = lcons($1,NIL); }
+ ;
+
+stmtmulti: stmtmulti stmt ';'
+ { $$ = lappend($1, $2); }
+ | stmtmulti stmt
+ { $$ = lappend($1, $2); }
+ | stmt ';'
+ { $$ = lcons($1,NIL); }
;
stmt : AddAttrStmt
| '[' OptStmtBlock ']' { $$ = $2; }
;
-OptStmtBlock: OptimizableStmt
+OptStmtBlock: OptStmtMulti
+ { $$ = $1; }
+ | OptimizableStmt
{ $$ = lcons($1, NIL); }
+ ;
+
+OptStmtMulti: OptStmtMulti OptimizableStmt ';'
+ { $$ = lappend($1, $2); }
+ | OptStmtMulti OptimizableStmt
+ { $$ = lappend($1, $2); }
| OptimizableStmt ';'
{ $$ = lcons($1, NIL); }
- | OptStmtBlock OptimizableStmt
- { $$ = lappend($1, $2); }
;
-
+
event_object: relation_name '.' attr_name
{
$$ = makeNode(Attr);