夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> sql2016_sql2012_sql2015_sql2008
写一个HTML代码或C++代码分析器是极其简单的
夜鹰教程网 来源:www.yyjcw.com 日期:2016-12-7 21:56:03
SQL分析器是这个程序的核心并且是最复杂的部分。和写一个SQL分析器相比,写一个HTML代码或C++代码分析器是极其简单的。

SQL分析器

   SQL分析器是这个程序的核心并且是最复杂的部分。和写一个SQL分析器相比,写一个HTML代码或C++代码分析器是极其简单的。

   别的语言都有固定的语法规则(比如在HTML里,所有的标签从<TAG>开始,以</TAG>结束,或者在C++里,所有的命令都是以function(argument,argument);构成的,每一行代码都是以”:”结束),但是SQL这么”语言”却没有规则。

   没有方法知道一个命令何时结束。最复杂的SELECT命令可以包含一个WHERE子句也可以不包含。它也许有一个JOIN子句也许没有,等等。在再没有子句跟着的时候它就结束了。
   断行符可以在任何地方出现或完全丢失。
   括弧可以在任何地方出现或没有。
   一些命令(比如 LEFT)也许是个关键字(在JOIN LEFT里)或是一个函数(在left(string,count)里)。

   最后,SQL完全不是一门编程语言。它会被经验不足的程序员滥用,产出的代码像来自地狱。SqlBuilder的分析器有能力清除任何丑陋的SQL代码。

它执行以下五个步骤:

   1.第一个分析器分析无格式的SQL文本,搜索命令、关键字、函数、数据类型、操作符,字符串、数字和注释等然后将它们每一个创建成一个ParserItem实例存储在一个双向链表中。
   2.第二个分析器分析所有的括弧如果他们非常复杂的话就将它们分隔成多行。
   3.第三个分析器递归的分析一些复杂的命令,比如SELECT、CASE、CREATE、BEGIN、END……
   4.第四个分析器分析并纠正所有的断行符
   5.最后一个分析器填充RtfHtmlBuilder(如下),从分析数据创建RTF文档、HTML代码或纯文本文件。

   只有第一个步骤和纯文本文件一起工作。接下来的步骤都是在对象上操作,这样它们分析的非常快速,所以分析只会发生在输入文本的时候。如果前一趟分析还没有结束的时候你输入了一个新的字母,那么先前的分析会被取消并且重新开始一个新的分析。所有这些东西都在后台运行,对用户是透明的。

“Defaults”类
SqlBuilder有一个名为Defaults的类。在这里你可以定义你自己的喜欢的默认设置,比如分析器使用的颜色,超时时间或在用户没有指定服务器时使用的默认SQL Server服务器。

复制链接 网友评论 收藏本文 关闭此页
上一条: SQL Server 2008在与你的业务相关…  下一条: SQL Server数据库中XML支持及查询返回X…
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
牛人是怎样处理海量数据的
MYSQL与MSSQL UPDATE两表更新语法…
SQL SERVER常用日期函数的详解
随机查询ORDER BY NEWID()
批量插入数据 延时 SQL
用sql转换汉字为拼音
定时同步服务器上的数据
SQL Server 2008与SQL Server 200…
在XP下安装SQL Server2000 清除安…
SQL触发器实例
Mssql触发器学习例子之UPDATE触发…
两表连接的SQL语句
写一个HTML代码或C++代码分析器是…
分页存储过程!
普通行列转换 SQL(1)
  最近更新
SQL命令:增加字段、修改字段、修…
sql 中的 indexOf 与 lastIndexOf…
SQL中使用正则表达式提取或者过滤…
什么是BI?
Mongodb是一种比较常见的NOSQL数据…
SQL2008 提示评估期已过的解决方法…
存在属性(Directory, Compressed)…
属性不匹配directory,archive
sql2012安装图解教程
一条sql语句批量插入多条记录
sql2016下载
sql server2008 r2 密钥
sql2016安装密钥
sql2016安装图解教程
sql server 2012提示评估期已过的…

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3