怎么用PostgreSQL词法语法解析器与dblink实现关联
本篇内容介绍了“怎么用PostgreSQL词法语法解析器与dblink实现关联”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
公司主营业务:成都网站设计、成都网站建设、外贸网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出宽城免费做网站回馈大家。
昨天有人说没明白那个Op是怎么回事,我们再仔细捋捋。代码在 src/backend/parser 下边,打开他们细细品味,非常简单。
scan.l与gram.y是截然不同的,当然是这样,前者是flex脚本,而后者是yacc脚本;前者是词法分析,而后者是语法分析。
来看scan.l中的操作符定义,它是由一个或者多个如下字符组成:~!@#^&`?+-*/%<>=,所以我们才说table_remote@dblink
要用操作符来定义,其它字符则可以直接使用,例如:name_list ',' name
,这里逗号可以作为一个语法元素,因为它并没有出现在词法引擎定义的字符列表中。
op_chars [\~\!\@\#\^\&\|\`\?\+\-\*\/\%\<\>\=] operator {op_chars}+
继续往下看,scan.l里针对 operator 的代码:
{operator} { (……中略) yylval->str = pstrdup(yytext); return Op; }
这里决定字符序列是否是Op,如果是,gram.y就会得到指示:下个token是Op。
Op在gram.y生成的gram.h里边可以找到定义:
#define Op 263
gram里边还能够知道这个token是不是 @ ,字符串比较就可以,因为它在gram.y里就是这么定义的:
%tokenIDENT FCONST SCONST BCONST XCONST Op
更多文章:
IBM《Yacc 与 Lex 快速入门》
谷歌、必应
书籍
《lex与yacc》
我不知道还能怎么更详细,多看多悟,自然就知道。
“怎么用PostgreSQL词法语法解析器与dblink实现关联”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
文章名称:怎么用PostgreSQL词法语法解析器与dblink实现关联
文章路径:http://pwwzsj.com/article/pgepei.html