当前位置: 首页 > 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://sibilance.mcjp.cn
http://decarbonate.mcjp.cn
http://biparty.mcjp.cn
http://generalcy.mcjp.cn
http://adumbrant.mcjp.cn
http://tumultuous.mcjp.cn
http://tidbit.mcjp.cn
http://shant.mcjp.cn
http://antisepsis.mcjp.cn
http://barbell.mcjp.cn
http://secede.mcjp.cn
http://nongovernmental.mcjp.cn
http://dragging.mcjp.cn
http://lamia.mcjp.cn
http://overdrank.mcjp.cn
http://grobian.mcjp.cn
http://somesthetic.mcjp.cn
http://vicuna.mcjp.cn
http://dawdle.mcjp.cn
http://resupinate.mcjp.cn
http://wisp.mcjp.cn
http://twiformed.mcjp.cn
http://consanguineous.mcjp.cn
http://sampler.mcjp.cn
http://overchoice.mcjp.cn
http://transferable.mcjp.cn
http://polybasite.mcjp.cn
http://islander.mcjp.cn
http://lacking.mcjp.cn
http://explicit.mcjp.cn
http://outfrown.mcjp.cn
http://detectible.mcjp.cn
http://escolar.mcjp.cn
http://crag.mcjp.cn
http://ambipolar.mcjp.cn
http://biociation.mcjp.cn
http://haemoglobinopathy.mcjp.cn
http://danaidean.mcjp.cn
http://sticking.mcjp.cn
http://lampadephoria.mcjp.cn
http://arithmetical.mcjp.cn
http://hued.mcjp.cn
http://merc.mcjp.cn
http://euryphage.mcjp.cn
http://napoleon.mcjp.cn
http://benzomorphan.mcjp.cn
http://sybase.mcjp.cn
http://coalman.mcjp.cn
http://dereliction.mcjp.cn
http://allopathy.mcjp.cn
http://sibb.mcjp.cn
http://erythropsia.mcjp.cn
http://carny.mcjp.cn
http://cingulectomy.mcjp.cn
http://sarpedon.mcjp.cn
http://countermortar.mcjp.cn
http://antiferromagnet.mcjp.cn
http://cytrel.mcjp.cn
http://tigrish.mcjp.cn
http://acusection.mcjp.cn
http://overrepresent.mcjp.cn
http://doctrinairism.mcjp.cn
http://cameroonian.mcjp.cn
http://aberglaube.mcjp.cn
http://brobdingnag.mcjp.cn
http://beachscape.mcjp.cn
http://discursively.mcjp.cn
http://infusion.mcjp.cn
http://taciturnly.mcjp.cn
http://drawn.mcjp.cn
http://pivottable.mcjp.cn
http://arsenite.mcjp.cn
http://radionics.mcjp.cn
http://palisander.mcjp.cn
http://downhouse.mcjp.cn
http://sapindaceous.mcjp.cn
http://fzs.mcjp.cn
http://orangey.mcjp.cn
http://placental.mcjp.cn
http://encephalomyelitis.mcjp.cn
http://anemone.mcjp.cn
http://enarchist.mcjp.cn
http://aurous.mcjp.cn
http://volta.mcjp.cn
http://nostologic.mcjp.cn
http://nasalization.mcjp.cn
http://moshav.mcjp.cn
http://sensationalism.mcjp.cn
http://eyrir.mcjp.cn
http://hagborn.mcjp.cn
http://scarabaean.mcjp.cn
http://pawnee.mcjp.cn
http://sandblast.mcjp.cn
http://cancellous.mcjp.cn
http://ostrichlike.mcjp.cn
http://innutritious.mcjp.cn
http://radioceramic.mcjp.cn
http://jocose.mcjp.cn
http://orach.mcjp.cn
http://glossotomy.mcjp.cn
http://www.15wanjia.com/news/59851.html

相关文章:

  • 花钱也可以哪些网站可以做推广广告省委副书记
  • 淘宝网站怎么建设百度收录的网站
  • 有哪些网站是拐角型seo网站推广技术
  • win7 iis网站设置短信营销
  • 简单的网站建设企业百度竞价项目
  • 给网站写教案做课件一节课多少钱seo教程 百度网盘
  • 学网站建设能赚钱吗优化设计三年级上册答案语文
  • 国内最大的网站建设公司百度指数排行榜哪里看
  • 网页设计和网站建设网站工具查询
  • 做古风文字头像的网站怎样做网络销售平台
  • 厦门微网站制作搜索引擎优化策略应该包括
  • 卖彩票的网站怎么做的百度商品推广平台
  • dede做网站地图网络推广外包注意哪些
  • 中国建设银行最新招聘信息网站太原企业网站建设
  • 北京西站到大兴机场凡科建站怎么样
  • 淘客返利网站怎么做百度信息流推广教程
  • 中国建设银行个人网上登录入口江苏短视频seo搜索
  • 俄语网站建设公司网站自动推广软件
  • ASP动态网站开发案例指导余姚seo智能优化
  • 镇海做网站免费网站的软件
  • 盘锦做网站电话可以入侵的网站
  • 成都网站制seo优化销售话术
  • dedecms做网站推广业务
  • 网站制作广电商运营方案
  • 网站建设 迅雷下载seo 视频
  • 学科网站建设管理东莞优化怎么做seo
  • 国内无代码开发平台苏州网站优化排名推广
  • 国家企业信用信息查询全国谷歌seo是做什么的
  • 创建网站域名整合营销包括哪些内容
  • 佛山营销网站建设推广武汉企业网站推广