一种编程语句的智能提示方法、装置、服务器及存储介质与流程

文档序号:14389733阅读:219来源:国知局
本发明涉及计算机
技术领域
:,尤其涉及一种编程语句的智能提示方法、装置、服务器及存储介质。
背景技术
::近年来随着计算机及数据库的发展,sql(structurequerylanguge,结构化查询语言)一种数据库专用的计算机编程语言得到了广泛使用。随着sql版本的升级,其增加了智能提示功能,可提示表名、视图名、函数名等这些一级数据库对象。但是,目前市面上的sql对于二级数据库对象如表对象中的列、函数的参数等的提示比较不完善。此外,sql语句如果比较复杂,并不是在输入到任何位置时都有提示,如oracle的sqldeveloper工具就不能提示子查询中的列。技术实现要素:本发明实施例提供一种编程语句的智能提示方法、装置、服务器及存储介质,能够给出有效提示,极大的便利开发人员编写复杂的编程语句,提升了用户的体验。第一方面,本发明实施例提供了一种编程语句的智能提示方法,该方法包括:获取输入的编程语句;采用语法解析器对所述编程语句进行解析,得到与所述编程语句关联的语句信息和状态集合信息;依据所述语句信息和所述状态集合信息,生成提示内容。第二方面,本发明实施例还提供了一种编程语句的智能提示装置,该装置包括:语句获取模块,用于获取输入的编程语句;信息获取模块,用于采用语法解析器对所述编程语句进行解析,得到与所述编程语句关联的语句信息和状态集合信息;提示内容生成模块,用于依据所述语句信息和所述状态集合信息,生成提示内容。第三方面,本发明实施例还提供了一种服务器,该服务器包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面中任意所述的编程语句的智能提示方法。第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任意所述的编程语句的智能提示方法。本发明实施例提供的一种编程语句的智能提示方法、装置、服务器及存储介质,通过采用语法解析器对用户输入的编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息,依据语句信息和状态集合信息即可得到编程语句对应的提示内容。该方法能够保证无论当前编程语句输入到了什么位置,都能找到其对应的状态集合信息,从而给出相应提示,极大的便利开发人员编写复杂的编程语句,提升了用户的体验。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:图1是本发明实施例一中提供的一种编程语句的智能提示方法的流程图;图2是本发明实施例一中提供的一种部分状态图示意图;图3是本发明实施例二中提供的一种编程语句的智能提示方法的流程图;图4是本发明实施例三中提供的一种遍历状态图中的状态顺序示意图;图5是本发明实施例四中提供的一种编程语句的智能提示装置的结构框图;图6是本发明实施例五中提供的一种服务器的结构示意图。具体实施方式下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。实施例一图1为本发明实施例一提供的一种编程语句的智能提示方法的流程图,本实施例可适用于用户进行编程时,对输入的编程语句的给出相应提示的情况。该方法可以由本发明实施例提供的编程语句的智能提示装置/服务器/计算机可读存储介质来执行,该装置/服务器/计算机可读存储介质可采用软件和/或硬件的方式实现。参见图1,该方法具体包括:s110,获取输入的编程语句。其中,编程语句是用户在编程软件界面输入的语句,对数据库语言而言,编程语句可以包括:c++、java或sql语句等。而sql是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名,因此,本实施例优选sql语句。s120,采用语法解析器对编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息。其中,语法解析器是用来对用户输入的编程语句进行解析的;语句信息是指用户在编程界面所输入的语句中包含的信息,是智能提示的重要辅助信息,可以包括语句的类型、名称等信息;将当前用户输入的语句称为一个状态,状态集合信息为当前输入的编程语句所有可能出现的下一状态的集合,即状态集合信息中状态包括至少一个状态。现有的编程语句智能提示方法,没有基于所选编程语言的语法规则,只能够提示数据库中简单语句的对象信息,导致提示内容不完善,因此,为了能够对用户在任何位置输入的任何语句给出准确的解析,以使提示内容更加全面完善,本实施例基于编程语言的语法规则及有限状态机原理构建了语法解析器。示例性的,在获取输入的编程语句之前,可采用如下操作来构建语法解析器:依据编程语言的基本语法规则以及输入文件格式,生成文法规则文件;将文法规则文件输入到分析器生成器,生成语法分析器;将有限状态机原理加入语法分析器,得到语法解析器。其中,编程语言的基本语法规则即为采用某种编程语言进行编写程序时,编程语句所必须要遵守的规则。当对数据库进行编程时,优选sql语句,对应的编程语言的基本语法规则即为sql语句的基本语法。语法分析器为一个可以分析文本文件结构的程序;分析器生成器是指专门用于生成语法分析器的工具,sql语句对应的分析器生成器可选用bison;输入文件格式为分析器生成器所能够识别的文件格式即bison输入文件格式。文法规则文件是指按照一定的规则和书写格式生成的文件,如根据实际的sql语法规则以及bison输入文件格式则可制定一个文法规则文件,该文件是对sql语句完整语法的描述,以及对记录中间分析结果信息的描述。将得到的文法规则文件输入到分析器生成器后,分析器生成器就会对所输入的文件进行相关处理,得到语法分析器,如bison程序根据描述sql语法的文法规则文件生成的语法分析器。为了能够提供给用户更加全面的提示内容,需要确定当前输入的编程语句的所有可能出现的下一状态,本实施例在语法分析器的基础上,引入了有限状态机原理。有限状态机原理是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。将有限状态机原理添加到语法分析器中,使得语法分析器内部通过有限状态机原理实现即语法解析器,从而可根据获取到的当前输入的编程语句所有可能出现的下一个状态的集合,来预测下一步可能出现的情况。示例性的,采用语法解析器对编程语句进行解析,得到语句信息和状态集合信息,可以包括:依据语法解析器对编程语句进行解析,得到语句信息,其中,语句信息包括语句的类型、语句中包含的数据库对象、数据库对象与别名的映射关系、子查询、过滤条件和查询列中的至少一个;依据语法解析器中的状态图,获取编程语句所有可能出现的下一个状态的集合,作为状态集合信息。其中,过滤条件可以为where过滤条件。例如,基于sql语句的基本语法规则和bison输入文件格式生成的文法规则文件中的一段内容如下:对应的,有限状态机原理的状态图以及相互关系可采用如图2所示的部分状态图进行表示,每一个圈的内容代表一个状态。通过遍历该状态图,即可获取到下一个状态的集合。例如:如果当前输入的状态是kw_select,那么由语法解析器解析获取到的下一状态就是:{'*'};如果当前状态是tv_name,那么由语法解析器解析获取到下一状态就是:{kw_as,alias,')',kw_where};如果当前状态是kw_where,那么由语法解析器解析获取到下一状态就是:{exp}。s130,依据语句信息和状态集合信息,生成提示内容。其中,提示内容是指编程语句对应的代码的提示,可用于提示用户接下来应该写的语句内容。当获取到当前输入的编程语句所对应的语句信息和状态集合信息后,即可根据一定的规则,给出相应的提示内容。示例性的,提示内容可由智能提示模块给出,智能提示模块是专门用于对输入的内容进行整合分析的工具。将把语句信息和状态集合信息输入到智能提示模块后,智能提示模块就会对输入的语句信息和状态集合信息进行整合处理,并输出相应的提示内容。本发明实施例提供的一种编程语句的智能提示方法,通过采用语法解析器对用户输入的编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息,依据语句信息和状态集合信息即可得到编程语句对应的提示内容。该方法能够保证无论当前编程语句输入到了什么位置,都能找到其对应的状态集合信息,从而给出相应提示,极大的便利开发人员编写复杂的编程语句,提升了用户的体验。此外,由于采用了语法解析模块,不论语句层次关系有多复杂、多深,均能给出准确的提示信息。实施例二图3为本发明实施例二中提供的一种编程语句的智能提示方法的流程图,本实施例在上述实施例的基础上,进一步地对依据语句信息和状态集合信息,生成提示内容进行优化。具体的,参见图3,该方法包括:s310,获取输入的编程语句。s320,采用语法解析器对编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息。s330,获取状态集合信息中各状态对应的提示方法。其中,提示方法是指用于基于一定的规则给出提示内容的方法。语法解析器里的每一种状态在智能提示模块中都对应各自的提示方法即不同的状态对应不同的提示方法。状态集合信息中状态包括至少一个状态。s340,依据提示方法,结合语句信息查询数据库,生成提示内容。具体的,当状态集合信息中状态只有一个时,可根据该状态调用其对应的提示方法,通过查询数据库获得完整而准确的提示内容,最后输出。如果输入的是一个状态的集合,就会获取集合中每种状态的提示内容,整合成一个列表形式后一起输出。示例性的,依据提示方法,结合语句信息查询数据库,生成提示内容可以包括:依据提示方法,结合语句信息查询数据库,得到提示资料集;对提示资料集进行整合处理,生成提示内容。其中,提示资料集即为用于生成对应的提示内容的所有资料。为了便于智能提示模块统计分析,将所有的状态分为两种类型:一种是关键字(keyword,kw),对应的提示内容就是这个关键字本身。例如,kw_select对应关键字select,kw_where对应的是关键字where等。另一种是数据库对象,数据库对象指模式、表、视图、索引、系统包、函数等。数据库对象的提示,需先连接到数据库,从数据库中查询到对应类型的数据库对象名称。这个数据库对象可能是库级的,模式级的,或者是表级的,可根据具体的状态具体实现。进一步以图2所示的状态为例,每个状态对应的提示方法状态为:kw_from:这种kw_开头的就是关键字,提示内容就是关键字本身“from”;状态tv_name:这个状态表示的是表名,提示内容就是数据库中的所有数据库表对象的名称;状态exp:这里的exp是where条件,由于语法解析器已经解析到了语句中的查询表对象,如果有别名,也已经解析到表对象和别名的映射关系。因此所对应的提示内容就是语句信息获得的所有表对象名称以及表对象的所有列。此外,如果表对象有对应的别名,则提示的内容中的表名部分就用该表的别名替代。本发明实施例提供的一种编程语句的智能提示方法,通过采用语法解析器对用户输入的编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息,依据状态集合信息中各状态对应的提示方法在数据库中进行查找即可得到编程语句对应的提示内容。该方法能够保证无论当前编程语句输入到了什么位置,都能找到其对应的下一状态的所有可能出现的状态集合信息,从而给出比较全面的提示内容,极大的便利开发人员编写复杂的编程语句,提升了用户的体验;同时,由于采用了基于语法规则生成的语法解析模块,不论语句层次关系有多复杂、多深,均能给出准确的提示信息。实施例三本实施例三为在上述实施例的基础上提供的一种优选实例。结合实施例一中给出的文法规则文件中的一段内容以及图2给出的部分状态图,具体操作过程为:首先,在数据库中定义了一个表对象test,用于后面的查询操作。表定义语句为:createtabletest(c1int,c2varchar(100));该表对象中含有c1,c2两列。当用户在数据库输入界面输入的sql语句为:“select*from(select*fromtest)awhere”。其中,(select*fromtest)为子查询,a为test对应的别名。经语法解析器对输入的sql语句进行解析后,得到该语句所对应的语句信息为:表名test,表test对应别名a等;状态集合信息为:kw_where,从状态图2中可以得到kw_where的下一状态集合是{exp}。具体的分析过程为图4所示的依次遍历状态图中的状态顺序。将有语法解析器解析获得的语句信息和状态集合信息{exp}一起输入智能提示模块,经由相应的提示方法处理之后,给出提示信息。最终的提示内容如下:本发明实施例提供的一种编程语句的智能提示方法,通过采用语法解析器对用户输入的编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息,依据状态集合信息中各状态对应的提示方法在数据库中进行查找即可得到编程语句对应的提示内容。该方法能够保证无论当前编程语句输入到了什么位置,都能找到其对应的下一状态的所有可能出现的状态集合信息,从而给出比较全面的提示内容,极大的便利开发人员编写复杂的编程语句,提升了用户的体验;同时,由于采用了基于语法规则生成的语法解析模块,不论语句层次关系有多复杂、多深,均能给出准确的提示信息。实施例四图5为本发明实施例四提供的一种编程语句的智能提示装置的结构框图,该装置可执行本发明任意实施例所提供的编程语句的智能提示方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置可以包括:语句获取模块510,用于获取输入的编程语句;信息获取模块520,用于采用语法解析器对编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息;提示内容生成模块530,用于依据语句信息和状态集合信息,生成提示内容。本发明实施例提供的一种编程语句的智能提示装置,通过采用语法解析器对用户输入的编程语句进行解析,得到与编程语句关联的语句信息和状态集合信息,依据语句信息和状态集合信息即可得到编程语句对应的提示内容。该方法能够保证无论当前编程语句输入到了什么位置,都能找到其对应的状态集合信息,从而给出相应提示,极大的便利开发人员编写复杂的编程语句,提升了用户的体验。可选的,上述装置还可以包括:规则文件生成模块,用于在获取编程语句之前,依据编程语言的基本语法规则以及输入文件格式,生成文法规则文件;语法分析器生成模块,用于将文法规则文件输入到分析器生成器,生成语法分析器;语法解析器生成模块,用于将有限状态机原理加入语法分析器,得到语法解析器。示例性的,信息获取模块520具体可以用于:依据语法解析器对编程语句进行解析,得到语句信息,其中,语句信息包括语句的类型、语句中包含的数据库对象、数据库对象与别名的映射关系、子查询、过滤条件和查询列中的至少一个;依据所述语法解析器中的状态图,获取编程语句所有可能出现的下一个状态的集合,作为状态集合信息。示例性的,提示内容生成模块530可以包括:提示方法获取单元,用于获取状态集合信息中各状态对应的提示方法;提示内容生成单元,用于依据提示方法,结合语句信息查询数据库,生成提示内容。可选的,提示内容生成单元具体用于:依据所述提示方法,结合语句信息查询数据库,得到提示资料集;对提示资料集进行整合处理,生成提示内容。实施例五图6为本发明实施例五提供的一种服务器的结构示意图。图6示出了适于用来实现本发明实施方式的示例性服务器12的框图。图6显示的服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图6所示,该服务器12以通用计算设备的形式表现。该服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备交互的设备通信,和/或与使得该服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的编程语句的智能提示方法。实施例六本发明实施例六还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述实施例中任意的编程语句的智能提示方法。本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。上述实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1