当前位置: 首页 > news >正文

李洋网站建设花店网页设计代码

李洋网站建设,花店网页设计代码,登录企业邮箱入口,装饰工程施工工艺General expressions语法规则定义在src/backend/parser/gram.y文件中,其是表达式语法的核心。有两种表达式类型:a_expr是不受限制的类型,b_expr是必须在某些地方使用的子集,以避免移位/减少冲突。例如,我们不能将BETWE…

General expressions语法规则定义在src/backend/parser/gram.y文件中,其是表达式语法的核心。有两种表达式类型:a_expr是不受限制的类型,b_expr是必须在某些地方使用的子集,以避免移位/减少冲突。例如,我们不能将BETWEEN作为BETWEEN a_expr AND a_exp,因为AND的使用与AND作为布尔运算符冲突。因此,b_exprBETWEEN中使用,我们从b_expr中删除布尔关键字。请注意,( a_expr )b_expr,因此始终可以使用无限制表达式,方法是用括号将其括起来。c_expra_exprb_expr共同的所有乘积;它被分解出来只是为了消除冗余编码。注意涉及多个terminal token的产出productions。默认情况下,bison将为此类productions分配其最后一个terminal的优先级,但在几乎所有情况下,您都希望它是第一个terminal的优先权;否则你不会得到你期望的行为!因此,我们可以自由使用%prec注释来设置优先级。
在这里插入图片描述
b_expr代表Restricted expressions,它是复杂表达式a_expr的子集,AND, NOT, IS, and IN是a_expr的关键字,这些关键字在b_expr使用会存在歧义。b_expr is a subset of the complete expression syntax defined by a_expr. Presently, AND, NOT, IS, and IN are the a_expr keywords that would cause trouble in the places where b_expr is used. For simplicity, we just eliminate all the boolean-keyword-operator productions from b_expr.

b_expr:		c_expr{ $$ = $1; }| b_expr TYPECAST Typename{ $$ = makeTypeCast($1, $3, @2); }| '+' b_expr					%prec UMINUS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); }| '-' b_expr					%prec UMINUS{ $$ = doNegate($2, @1); }| b_expr '+' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); }| b_expr '-' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); }| b_expr '*' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); }| b_expr '/' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); }| b_expr '%' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); }| b_expr '^' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); }| b_expr '<' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); }| b_expr '>' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); }| b_expr '=' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); }| b_expr LESS_EQUALS b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $3, @2); }| b_expr GREATER_EQUALS b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $3, @2); }| b_expr NOT_EQUALS b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", $1, $3, @2); }| b_expr qual_Op b_expr				%prec Op{ $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); }| qual_Op b_expr					%prec Op{ $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); }| b_expr qual_Op					%prec POSTFIXOP{ $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); }| b_expr IS DISTINCT FROM b_expr		%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); }| b_expr IS NOT DISTINCT FROM b_expr	%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", $1, $6, @2); }| b_expr IS OF '(' type_list ')'		%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); }| b_expr IS NOT OF '(' type_list ')'	%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); }| b_expr IS DOCUMENT_P					%prec IS{ $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1), @2); }| b_expr IS NOT DOCUMENT_P				%prec IS{ $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1), @2), @2); }

表达式强转

在这里插入图片描述
b_expr TYPECAST Typename是表达式强转的规则,其中主要关注SimpleTypename所代表的规则。除了GenericType之外的规则和PostgreSQL查询引擎——General Expressions Grammar之AexprConst中介绍的常量类型强转类似,这里仅仅关注GenericType。

SimpleTypename:GenericType								{ $$ = $1; }| Numeric								{ $$ = $1; }| Bit									{ $$ = $1; }| Character								{ $$ = $1; }| ConstDatetime							{ $$ = $1; }| ConstInterval opt_interval{ $$ = $1; $$->typmods = $2; }| ConstInterval '(' Iconst ')'{ $$ = $1; $$->typmods = list_make2(makeIntConst(INTERVAL_FULL_RANGE, -1), makeIntConst($3, @3)); };

GenericType涵盖所有没有标准规定的特殊语法的类型名称,包括限定名称。我们还允许类型修饰符。为了避免对函数调用的解析冲突,这里必须将修饰符显示为expr_list,但解析分析只接受它们的常量。GenericType covers all type names that don’t have special syntax mandated by the standard, including qualified names. We also allow type modifiers. To avoid parsing conflicts against function invocations, the modifiers have to be shown as expr_list here, but parse analysis will only accept constants for them.

GenericType:type_function_name opt_type_modifiers{ $$ = makeTypeName($1); $$->typmods = $2; $$->location = @1; }| type_function_name attrs opt_type_modifiers{ $$ = makeTypeNameFromNameList(lcons(makeString($1), $2)); $$->typmods = $3; $$->location = @1; }
opt_type_modifiers: '(' expr_list ')'				{ $$ = $2; }| /* EMPTY */					{ $$ = NIL; }

表达式强转的规则不同之处在于opt_array_bounds和ARRAY对于arrayBounds成员取值的影响,以及使用SETOF需要将setof成员设置为true。

Typename:	SimpleTypename opt_array_bounds{ $$ = $1; $$->arrayBounds = $2; }| SETOF SimpleTypename opt_array_bounds{ $$ = $2; $$->arrayBounds = $3; $$->setof = true; }/* SQL standard syntax, currently only one-dimensional */| SimpleTypename ARRAY '[' Iconst ']'{ $$ = $1; $$->arrayBounds = list_make1(makeInteger($4)); }| SETOF SimpleTypename ARRAY '[' Iconst ']'{ $$ = $2; $$->arrayBounds = list_make1(makeInteger($5)); $$->setof = true; }| SimpleTypename ARRAY{ $$ = $1; $$->arrayBounds = list_make1(makeInteger(-1)); }| SETOF SimpleTypename ARRAY{ $$ = $2; $$->arrayBounds = list_make1(makeInteger(-1)); $$->setof = true; }
opt_array_bounds:opt_array_bounds '[' ']'{  $$ = lappend($1, makeInteger(-1)); }| opt_array_bounds '[' Iconst ']'{  $$ = lappend($1, makeInteger($3)); }| /*EMPTY*/{  $$ = NIL; }

运算符

请添加图片描述

			| '+' b_expr					%prec UMINUS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", NULL, $2, @1); }| '-' b_expr					%prec UMINUS{ $$ = doNegate($2, @1); }| b_expr '+' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "+", $1, $3, @2); }| b_expr '-' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "-", $1, $3, @2); }| b_expr '*' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "*", $1, $3, @2); }| b_expr '/' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "/", $1, $3, @2); }| b_expr '%' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "%", $1, $3, @2); }| b_expr '^' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "^", $1, $3, @2); }| b_expr '<' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<", $1, $3, @2); }| b_expr '>' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">", $1, $3, @2); }| b_expr '=' b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "=", $1, $3, @2); }| b_expr LESS_EQUALS b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<=", $1, $3, @2); }| b_expr GREATER_EQUALS b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, ">=", $1, $3, @2); }| b_expr NOT_EQUALS b_expr{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OP, "<>", $1, $3, @2); }| b_expr qual_Op b_expr				%prec Op{ $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, $3, @2); }| qual_Op b_expr					%prec Op{ $$ = (Node *) makeA_Expr(AEXPR_OP, $1, NULL, $2, @1); }| b_expr qual_Op					%prec POSTFIXOP{ $$ = (Node *) makeA_Expr(AEXPR_OP, $2, $1, NULL, @2); }| b_expr IS DISTINCT FROM b_expr		%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_DISTINCT, "=", $1, $5, @2); }| b_expr IS NOT DISTINCT FROM b_expr	%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_NOT_DISTINCT, "=", $1, $6, @2); }| b_expr IS OF '(' type_list ')'		%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "=", $1, (Node *) $5, @2); }| b_expr IS NOT OF '(' type_list ')'	%prec IS{ $$ = (Node *) makeSimpleA_Expr(AEXPR_OF, "<>", $1, (Node *) $6, @2); }| b_expr IS DOCUMENT_P					%prec IS{ $$ = makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1), @2); }| b_expr IS NOT DOCUMENT_P				%prec IS{ $$ = makeNotExpr(makeXmlExpr(IS_DOCUMENT, NULL, NIL, list_make1($1), @2), @2); }

https://www.developerastrid.com/sql/sql-predicates/

http://www.yayakq.cn/news/703516/

相关文章:

  • php网站建设制作嘉兴网站建设
  • 网站制作备案上线流程网站建设的收入来源
  • 宿州科技网站建设网站设计教程文档
  • 两学一做专题网站介绍网站域名最便宜
  • 用vue做pc端网站好吗企业seo可以达到怎样的效果
  • 网站建设电话销售说不需要专业外贸网站制作
  • 企业网站建设的背景国内免费开源crm
  • 重庆网站建设外包公司哪家好怎么让网站排名下降
  • 曲靖网站制作wordpress4.6字体
  • 做搜狗网站优化首crm系统价格
  • 怎么拥有网站的所有权甘肃商城网站建设
  • 黑河城乡建设局网站产品关键词大全
  • 城阳区城市规划建设局网站h5制作模板免费永久
  • 网站建设业务员怎么着客户高端网站建设步骤
  • 网站开发建设总结小米手机做网站服务器吗
  • 58同城盐城网站建设怎样创建网站教程
  • 移动端网站没有icp百度认证怎么认证
  • 景观设计师如何做网站seo诊断工具
  • 淮南网站优化淘宝客网站能用淘宝图标做标志吗
  • 网站开发发帖语言上海松江做网站
  • 网站制作资料收集东软集团建设网站
  • 网站图片切换效果wordpress 登录模板
  • 高端网站建设软件开发东软网站建设方案
  • 谁会网站开发浙江平台网站建设制作
  • 做影视网站怎么学做网站培训机构
  • 济南市网站推广公司jq 网站头部广告代码
  • 定制柜seo主要优化
  • 如何做好网站推广营销深圳品牌网站设计公司价格
  • 企业网站主题宣讲家网站李慎明两学一做
  • 网站建网站建设企业房产机构网站建设目标定位