《flex&bison》之sql解析

        大概上半年接了一本《深入理解MySQL》,看了个一知半解吧!这里不得不说这本书有点贪大求全了。什么存储引擎、sql解析、查询优化等等的内容都涉及。如果领悟能力高的话,可能对数据库有一种全局的把握。不然的话还是需要看看其他资料了。当时不懂sql编译原理(其实现在也不懂,这货太愁银了),以为sql解析应该是一个简单的事情。毕竟不需要生成最终机器代码嘛,其实不然呀!举个例子吧,使用flex和bison为ANSI C和SQL构建编译器。MySQL的SQL语法文件有一万多行,而ANSI C就几百行。我顿时感觉事情不是我想的那样了。SQL也不是吃素的呀!前面一直在啃《flex&bison》,虽说是讲工具的使用,但是毕竟是编译呀!尤其对我这样的原理爱好者,简直好折磨。不过一知半解怎么也比眼前一抹黑要好。
        在MySQL中,SQL语法分析器的输出是语法树;而在《flex&bison》中,分析器的输出是逆波兰式代码。不过大同小异吧,作用其实是一样的。这书里面主要实现了select语句,作者说select是SQL中最复杂的语句了,想想也是,数据库的最大的作用不就是提供查询服务嘛!
select_stmt: SELECT select_opts select_expr_list
                        { emit("SELECTNODATA %d %d", $2, $3); } ;
    | SELECT select_opts select_expr_list
     FROM table_references
     opt_where opt_groupby opt_having opt_orderby opt_limit
     opt_into_list { emit(&#
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值