Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4371756

Browse files
committed
Improve handling of semicolons ending statements.
1 parent231e1e7 commit4371756

File tree

1 file changed

+31
-15
lines changed

1 file changed

+31
-15
lines changed

‎src/backend/parser/gram.y

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
*
1111
*
1212
* IDENTIFICATION
13-
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.22 1996/12/17 01:53:29 momjian Exp $
13+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.23 1996/12/20 20:33:12 momjian Exp $
1414
*
1515
* HISTORY
1616
* AUTHORDATEMAJOR EVENT
@@ -98,7 +98,8 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
9898
AppendStmt*astmt;
9999
}
100100

101-
%type <node>stmt, AddAttrStmt, ClosePortalStmt,
101+
%type <node>stmt,
102+
AddAttrStmt, ClosePortalStmt,
102103
CopyStmt, CreateStmt, DefineStmt, DestroyStmt,
103104
ExtendStmt, FetchStmt,GrantStmt,
104105
IndexStmt, MoveStmt, ListenStmt, OptimizableStmt,
@@ -121,10 +122,12 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
121122
%type <str>privileges, operation_commalist, grantee
122123
%type <chr>operation
123124

124-
%type <list>stmtblock, relation_name_list, OptTableElementList,
125+
%type <list>stmtblock, stmtmulti,
126+
relation_name_list, OptTableElementList,
125127
tableElementList, OptInherit, definition,
126128
opt_with, def_args, def_name_list, func_argtypes,
127-
oper_argtypes, OptStmtList, OptStmtBlock, opt_column_list, columnList,
129+
oper_argtypes, OptStmtList, OptStmtBlock, OptStmtMulti,
130+
opt_column_list, columnList,
128131
sort_clause, sortby_list, index_params,
129132
name_list, from_clause, from_list, opt_array_bounds, nest_array_bounds,
130133
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);
210213
%left '+' '-'
211214
%left '*' '/'
212215
%left'|'/* this is the relation union op, not logical or */
213-
%right ';' ':'/* Unary Operators */
216+
%right ':'/* Unary Operators */
217+
%left';'/* end of statement or natural log */
214218
%nonassoc '<' '>'
215219
%right UMINUS
216220
%left'.'
@@ -219,12 +223,18 @@ static Node *makeA_Expr(int oper, char *opname, Node *lexpr, Node *rexpr);
219223
%nonassoc REDUCE
220224
%%
221225

222-
stmtblock: stmt ';' stmtblock
223-
{ parsetree = lcons($1, parsetree); }
224-
| stmt ';'
225-
{ parsetree = lcons($1, NIL); }
226-
| stmt
227-
{ parsetree = lcons($1, NIL); }
226+
stmtblock: stmtmulti
227+
{ parsetree = $1; }
228+
| stmt
229+
{ parsetree = lcons($1,NIL); }
230+
;
231+
232+
stmtmulti: stmtmulti stmt ';'
233+
{ $$ = lappend($1, $2); }
234+
| stmtmulti stmt
235+
{ $$ = lappend($1, $2); }
236+
| stmt ';'
237+
{ $$ = lcons($1,NIL); }
228238
;
229239

230240
stmt : AddAttrStmt
@@ -949,14 +959,20 @@ OptStmtList: NOTHING{ $$ = NIL; }
949959
| '[' OptStmtBlock ']'{ $$ = $2; }
950960
;
951961

952-
OptStmtBlock: OptimizableStmt
962+
OptStmtBlock: OptStmtMulti
963+
{ $$ = $1; }
964+
| OptimizableStmt
953965
{ $$ = lcons($1, NIL); }
966+
;
967+
968+
OptStmtMulti: OptStmtMulti OptimizableStmt ';'
969+
{ $$ = lappend($1, $2); }
970+
| OptStmtMulti OptimizableStmt
971+
{ $$ = lappend($1, $2); }
954972
| OptimizableStmt ';'
955973
{ $$ = lcons($1, NIL); }
956-
| OptStmtBlock OptimizableStmt
957-
{ $$ = lappend($1, $2); }
958974
;
959-
975+
960976
event_object: relation_name '.' attr_name
961977
{
962978
$$ = makeNode(Attr);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp