⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preproc.y

📁 关系型数据库 Postgresql 6.5.2
💻 Y
📖 第 1 页 / 共 5 页
字号:
default_list:  default_list ',' default_expr				{					$$ = cat3_str($1, make1_str(","), $3);				}			| default_expr				{					$$ = $1;				}		;/* The Postgres default column value is NULL. * Rather than carrying DEFAULT NULL forward as a clause, * let's just have it be a no-op.                        | NULL_P				{	$$ = make1_str("null"); } * - thomas 1998-09-13 */default_expr:  AexprConst				{	$$ = $1; }			| '-' default_expr %prec UMINUS				{	$$ = cat2_str(make1_str("-"), $2); }			| default_expr '+' default_expr				{	$$ = cat3_str($1, make1_str("+"), $3); }			| default_expr '-' default_expr				{	$$ = cat3_str($1, make1_str("-"), $3); }			| default_expr '/' default_expr				{	$$ = cat3_str($1, make1_str("/"), $3); }			| default_expr '%' default_expr				{	$$ = cat3_str($1, make1_str("%"), $3); }			| default_expr '*' default_expr				{	$$ = cat3_str($1, make1_str("*"), $3); }			| default_expr '=' default_expr				{	yyerror("boolean expressions not supported in DEFAULT"); }			| default_expr '<' default_expr				{	yyerror("boolean expressions not supported in DEFAULT"); }			| default_expr '>' default_expr				{	yyerror("boolean expressions not supported in DEFAULT"); }/* not possible in embedded sql 			| ':' default_expr				{	$$ = cat2_str(make1_str(":"), $2); }*/			| ';' default_expr				{	$$ = cat2_str(make1_str(";"), $2); }			| '|' default_expr				{	$$ = cat2_str(make1_str("|"), $2); }			| default_expr TYPECAST Typename				{	$$ = cat3_str($1, make1_str("::"), $3); }			| CAST '(' default_expr AS Typename ')'				{					$$ = cat3_str(make2_str(make1_str("cast("), $3) , make1_str("as"), make2_str($5, make1_str(")")));				}			| '(' default_expr ')'				{	$$ = make3_str(make1_str("("), $2, make1_str(")")); }			| func_name '(' ')'				{	$$ = cat2_str($1, make1_str("()")); }			| func_name '(' default_list ')'				{	$$ = cat2_str($1, make3_str(make1_str("("), $3, make1_str(")"))); }			| default_expr Op default_expr				{					if (!strcmp("<=", $2) || !strcmp(">=", $2))						yyerror("boolean expressions not supported in DEFAULT");					$$ = cat3_str($1, $2, $3);				}			| Op default_expr				{	$$ = cat2_str($1, $2); }			| default_expr Op				{	$$ = cat2_str($1, $2); }			/* XXX - thomas 1997-10-07 v6.2 function-specific code to be changed */			| CURRENT_DATE				{	$$ = make1_str("current_date"); }			| CURRENT_TIME				{	$$ = make1_str("current_time"); }			| CURRENT_TIME '(' Iconst ')'				{					if ($3 != 0)						fprintf(stderr, "CURRENT_TIME(%s) precision not implemented; zero used instead",$3);					$$ = "current_time";				}			| CURRENT_TIMESTAMP				{	$$ = make1_str("current_timestamp"); }			| CURRENT_TIMESTAMP '(' Iconst ')'				{					if ($3 != 0)						fprintf(stderr, "CURRENT_TIMESTAMP(%s) precision not implemented; zero used instead",$3);					$$ = "current_timestamp";				}			| CURRENT_USER				{	$$ = make1_str("current_user"); }			| USER				{       $$ = make1_str("user"); }		;/* ConstraintElem specifies constraint syntax which is not embedded into *  a column definition. ColConstraintElem specifies the embedded form. * - thomas 1997-12-03 */TableConstraint:  CONSTRAINT name ConstraintElem				{						$$ = cat3_str(make1_str("constraint"), $2, $3);				}		| ConstraintElem				{ $$ = $1; }		;ConstraintElem:  CHECK '(' constraint_expr ')'				{					$$ = make3_str(make1_str("check("), $3, make1_str(")"));				}		| UNIQUE '(' columnList ')'				{					$$ = make3_str(make1_str("unique("), $3, make1_str(")"));				}		| PRIMARY KEY '(' columnList ')'				{					$$ = make3_str(make1_str("primary key("), $4, make1_str(")"));				}		| FOREIGN KEY '(' columnList ')' REFERENCES ColId opt_column_list key_match key_actions				{					fprintf(stderr, "CREATE TABLE/FOREIGN KEY clause ignored; not yet implemented");					$$ = "";				}		;constraint_list:  constraint_list ',' constraint_expr				{					$$ = cat3_str($1, make1_str(","), $3);				}			| constraint_expr				{					$$ = $1;				}		;constraint_expr:  AexprConst				{	$$ = $1; }			| NULL_P				{	$$ = make1_str("null"); }			| ColId				{					$$ = $1;				}			| '-' constraint_expr %prec UMINUS				{	$$ = cat2_str(make1_str("-"), $2); }			| constraint_expr '+' constraint_expr				{	$$ = cat3_str($1, make1_str("+"), $3); }			| constraint_expr '-' constraint_expr				{	$$ = cat3_str($1, make1_str("-"), $3); }			| constraint_expr '/' constraint_expr				{	$$ = cat3_str($1, make1_str("/"), $3); }			| constraint_expr '%' constraint_expr				{	$$ = cat3_str($1, make1_str("%"), $3); }			| constraint_expr '*' constraint_expr				{	$$ = cat3_str($1, make1_str("*"), $3); }			| constraint_expr '=' constraint_expr				{	$$ = cat3_str($1, make1_str("="), $3); }			| constraint_expr '<' constraint_expr				{	$$ = cat3_str($1, make1_str("<"), $3); }			| constraint_expr '>' constraint_expr				{	$$ = cat3_str($1, make1_str(">"), $3); }/* this one doesn't work with embedded sql anyway			| ':' constraint_expr				{	$$ = cat2_str(make1_str(":"), $2); }*/			| ';' constraint_expr				{	$$ = cat2_str(make1_str(";"), $2); }			| '|' constraint_expr				{	$$ = cat2_str(make1_str("|"), $2); }			| constraint_expr TYPECAST Typename				{					$$ = cat3_str($1, make1_str("::"), $3);				}			| CAST '(' constraint_expr AS Typename ')'				{					$$ = cat3_str(make2_str(make1_str("cast("), $3), make1_str("as"), make2_str($5, make1_str(")"))); 				}			| '(' constraint_expr ')'				{	$$ = make3_str(make1_str("("), $2, make1_str(")")); }			| func_name '(' ')'				{				{	$$ = cat2_str($1, make1_str("()")); }				}			| func_name '(' constraint_list ')'				{					$$ = cat2_str($1, make3_str(make1_str("("), $3, make1_str(")")));				}			| constraint_expr Op constraint_expr				{	$$ = cat3_str($1, $2, $3); }			| constraint_expr LIKE constraint_expr				{	$$ = cat3_str($1, make1_str("like"), $3); }			| constraint_expr NOT LIKE constraint_expr				{	$$ = cat3_str($1, make1_str("not like"), $4); }			| constraint_expr AND constraint_expr				{	$$ = cat3_str($1, make1_str("and"), $3); }			| constraint_expr OR constraint_expr				{	$$ = cat3_str($1, make1_str("or"), $3); }			| NOT constraint_expr				{	$$ = cat2_str(make1_str("not"), $2); }			| Op constraint_expr				{	$$ = cat2_str($1, $2); }			| constraint_expr Op				{	$$ = cat2_str($1, $2); }			| constraint_expr ISNULL				{	$$ = cat2_str($1, make1_str("isnull")); }			| constraint_expr IS NULL_P				{	$$ = cat2_str($1, make1_str("is null")); }			| constraint_expr NOTNULL				{	$$ = cat2_str($1, make1_str("notnull")); }			| constraint_expr IS NOT NULL_P				{	$$ = cat2_str($1, make1_str("is not null")); }			| constraint_expr IS TRUE_P				{	$$ = cat2_str($1, make1_str("is true")); }			| constraint_expr IS FALSE_P				{	$$ = cat2_str($1, make1_str("is false")); }			| constraint_expr IS NOT TRUE_P				{	$$ = cat2_str($1, make1_str("is not true")); }			| constraint_expr IS NOT FALSE_P				{	$$ = cat2_str($1, make1_str("is not false")); }			| constraint_expr IN '(' c_list ')'				{	$$ = cat4_str($1, make1_str("in ("), $4, make1_str(")")); }			| constraint_expr NOT IN '(' c_list ')'				{	$$ = cat4_str($1, make1_str("not in ("), $5, make1_str(")")); }			| constraint_expr BETWEEN c_expr AND c_expr				{	$$ = cat5_str($1, make1_str("between"), $3, make1_str("and"), $5); }			| constraint_expr NOT BETWEEN c_expr AND c_expr				{	$$ = cat5_str($1, make1_str("not between"), $4, make1_str("and"), $6); }		;c_list:  c_list ',' c_expr	{		$$ = make3_str($1, make1_str(", "), $3);	}	| c_expr	{		$$ = $1;	}c_expr:  AexprConst	{		$$ = $1;	}key_match:  MATCH FULL					{ $$ = make1_str("match full"); }		| MATCH PARTIAL					{ $$ = make1_str("match partial"); }		| /*EMPTY*/					{ $$ = make1_str(""); }		;key_actions:  key_action key_action		{ $$ = cat2_str($1, $2); }		| key_action					{ $$ = $1; }		| /*EMPTY*/					{ $$ = make1_str(""); }		;key_action:  ON DELETE key_reference	{ $$ = cat2_str(make1_str("on delete"), $3); }		| ON UPDATE key_reference		{ $$ = cat2_str(make1_str("on update"), $3); }		;key_reference:  NO ACTION	{ $$ = make1_str("no action"); }		| CASCADE	{ $$ = make1_str("cascade"); }		| SET DEFAULT	{ $$ = make1_str("set default"); }		| SET NULL_P	{ $$ = make1_str("set null"); }		;OptInherit:  INHERITS '(' relation_name_list ')' { $$ = make3_str(make1_str("inherits ("), $3, make1_str(")")); }		| /*EMPTY*/ { $$ = make1_str(""); }		;CreateAsStmt:  CREATE OptTemp TABLE relation_name OptCreateAs AS SubSelect		{			$$ = cat5_str(cat3_str(make1_str("create"), $2, make1_str("table")), $4, $5, make1_str("as"), $7); 		}		;OptCreateAs:  '(' CreateAsList ')' { $$ = make3_str(make1_str("("), $2, make1_str(")")); }			| /*EMPTY*/ { $$ = make1_str(""); }			;CreateAsList:  CreateAsList ',' CreateAsElement	{ $$ = cat3_str($1, make1_str(","), $3); }			| CreateAsElement	{ $$ = $1; }		;CreateAsElement:  ColId { $$ = $1; }		;/***************************************************************************** * *		QUERY : *				CREATE SEQUENCE seqname * *****************************************************************************/CreateSeqStmt:  CREATE SEQUENCE relation_name OptSeqList				{					$$ = cat3_str(make1_str("create sequence"), $3, $4);				}		;OptSeqList:  OptSeqList OptSeqElem				{ $$ = cat2_str($1, $2); }			|	{ $$ = make1_str(""); }		;OptSeqElem:  CACHE IntegerOnly				{					$$ = cat2_str(make1_str("cache"), $2);				}			| CYCLE				{					$$ = make1_str("cycle");				}			| INCREMENT IntegerOnly				{					$$ = cat2_str(make1_str("increment"), $2);				}			| MAXVALUE IntegerOnly				{					$$ = cat2_str(make1_str("maxvalue"), $2);				}			| MINVALUE IntegerOnly				{					$$ = cat2_str(make1_str("minvalue"), $2);				}			| START IntegerOnly				{					$$ = cat2_str(make1_str("start"), $2);				}		;NumericOnly:  FloatOnly         { $$ = $1; }		| IntegerOnly   { $$ = $1; }FloatOnly:  Fconst                               {                                       $$ = $1;                               }                       | '-' Fconst                               {                                       $$ = cat2_str(make1_str("-"), $2);                               }               ;IntegerOnly:  Iconst				{					$$ = $1;				}			| '-' Iconst				{					$$ = cat2_str(make1_str("-"), $2);				}		;/***************************************************************************** * *		QUERIES : *				CREATE PROCEDURAL LANGUAGE ... *				DROP PROCEDURAL LANGUAGE ... * *****************************************************************************/CreatePLangStmt:  CREATE PLangTrusted PROCEDURAL LANGUAGE Sconst 			HANDLER def_name LANCOMPILER Sconst			{				$$ = cat4_str(cat5_str(make1_str("create"), $2, make1_str("precedural language"), $5, make1_str("handler")), $7, make1_str("langcompiler"), $9);			}		;PLangTrusted:		TRUSTED { $$ = make1_str("trusted"); }			|	{ $$ = make1_str(""); }DropPLangStmt:  DROP PROCEDURAL LANGUAGE Sconst			{				$$ = cat2_str(make1_str("drop procedural language"), $4);			}		;/***************************************************************************** * *		QUERIES : *				CREATE TRIGGER ... *				DROP TRIGGER ... * *****************************************************************************/CreateTrigStmt:  CREATE TRIGGER name TriggerActionTime TriggerEvents ON				relation_name TriggerForSpec EXECUTE PROCEDURE				name '(' TriggerFuncArgs ')'				{					$$ = cat2_str(cat5_str(cat5_str(make1_str("create trigger"), $3, $4, $5, make1_str("on")), $7, $8, make1_str("execute procedure"), $11), make3_str(make1_str("("), $13, make1_str(")")));				}		;TriggerActionTime:  BEFORE				{ $$ = make1_str("before"); }			| AFTER				{ $$ = make1_str("after"); }		;TriggerEvents:	TriggerOneEvent				{					$$ = $1;				}			| TriggerOneEvent OR TriggerOneEvent				{					$$ = cat3_str($1, make1_str("or"), $3);				}			| TriggerOneEvent OR TriggerOneEvent OR TriggerOneEvent				{					$$ = cat5_str($1, make1_str("or"), $3, make1_str("or"), $5);				}		;TriggerOneEvent:  INSERT				{ $$ = make1_str("insert"); }			| DELETE			{ $$ = make1_str("delete"); }			| UPDATE			{ $$ = make1_str("update"); }		;TriggerForSpec:  FOR TriggerForOpt TriggerForType				{					$$ = cat3_str(make1_str("for"), $2, $3);				}		;TriggerForOpt:  EACH					{ $$ = make1_str("each"); }			| /*EMPTY*/			{ $$ = make1_str(""); }		;TriggerForType:  ROW					{ $$ = make1_str("row"); }			| STATEMENT			{ $$ = make1_str("statement"); }		;TriggerFuncArgs:  TriggerFuncArg				{ $$ = $1; }			| TriggerFuncArgs ',' TriggerFuncArg				{ $$ = cat3_str($1, make1_str(","), $3); }			| /*EMPTY*/				{ $$ = make1_str(""); }		;TriggerFuncArg:  Iconst				{					$$ = $1;				}			| Fconst				{					$$ = $1;				}			| Sconst	{  $$ = $1; }			| ident		{  $$ = $1; }		;DropTrigStmt:  DROP TRIGGER name ON relation_name				{					$$ = cat4_str(make1_str("drop trigger"), $3, make1_str("on"), $5);				}		;/***************************************************************************** * *		QUERY : *				define (type,operator,aggregate) * *****************************************************************************/DefineStmt:  CREATE def_type def_rest				{					$$ = cat3_str(make1_str("create"), $2, $3);				}		;def_rest:  def_name definition				{					$$ = cat2_str($1, $2);				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -