支持二进制数据字面值的词法分析方法、系统及响应方法与流程

文档序号:34986455发布日期:2023-08-03 19:21阅读:23来源:国知局
支持二进制数据字面值的词法分析方法、系统及响应方法与流程

本发明涉及信息,具体涉及支持二进制数据字面值的词法分析方法、系统及响应方法。


背景技术:

1、词法分析:是计算机科学中将字符序列转换为单词(token)序列的过程。字面值:常量表达式的值需要在编译时就得到计算,因此对声明常量时用到的类型必须有所限制。因为这些类型一般比较简单,值也显而易见、容易得到,就把它们称为“字面值类型”,即literal type。二进制数据字面值:通俗的说就是把二进制数据通过字符显示出来的值,一般看上去是一堆乱码的形式,一个编码集不一定对每个编码都进行了定义。例如中文可能有8000多个文字那么除了这8000个文字字符对应的二进制数据以外的数据,均为未定义字符。所以将二进制数据转换为可见字符,字符集不一定能支持,例如把字节数组[27,29,0,31]按某个字符集,gbk或者utf-8,转换出来然后打印,得到的即为一堆乱码。十六进制字符串形式字面值:指的是将二进制数据转换为16进制再以字符串的形式显示出来,例如字节数组[27,29,0,31]转换后即为0x1b1d001f,这种格式可读性更高,但是显然占用的空间也更大。

2、二进制数据字面值通常用于一些数据库通过sql直接写入二进制数据。如果需要在用户将数据写入数据库之前进行一些数据收集、分析或者改写,则需要先对其进行词法分析,确切地找到对应的数据或者二进制数据,才能进行正确的处理。现有的一些词法分析工具并不支持对二进制字面值进行词法分析,或者处理结束后会导致数据的丢失。因此需要研究能够支持对二进制字面值进行词法分析处理的技术。


技术实现思路

1、本发明所要解决的技术问题:目前缺乏支持二进制数据字面值分析技术的问题。提出了一种支持二进制数据字面值的词法分析方法、系统及响应方法,能够对二进制数据字面值进行分析。

2、为解决上述技术问题,本发明采用如下技术方案:支持二进制数据字面值的词法分析方法,包括以下步骤:

3、接收用户提供的约定字符集;

4、接收用户发送的经过所述约定字符集编码的请求语句;

5、使用预设单字节编码字符集对所述请求语句进行反序列化;

6、对反序列化后的所述请求语句进行词法分析,获得分词;

7、识别分词的字面值类型;

8、若字面值类型为二进制数据字面值,则将分词反二进制转义后记录为二进制数据,反之,则字面值类型必为字符串字面值,使用约定字符集对所述分词进行解码获得复原字符串;

9、将获得的二进制数据及复原字符串拼接,获得完整的请求语句。

10、作为优选,使用所述约定字符集编码的请求语句的方法包括:

11、截取所述请求语句包含的二进制数据;

12、将二进制数据包含的预设字符进行转义处理;

13、在二进制数据前添加预设标识符。

14、作为优选,识别分词的字面值类型的方法包括:

15、检查分词前是否存在预设标识符,若存在预设标识符,则判定分词为二进制数据字面值,反之,则判定分词为字符串字面值。

16、作为优选,进行词法分析的方法包括:

17、建立分词库;

18、将单字符与后续单字符逐个拼接,直到能够与所述分词库中的分词匹配;

19、匹配的全部单字符构成分词。

20、作为优选,建立分词库的方法包括:

21、列举所述请求语句能够包含的关键词;

22、将所述关键词按照多种字符编码进行编码,所述关键词的编码作为分词,加入分词库,将分词库与对应的字符编码关联。

23、一种sql请求转码响应方法,用于实现数据库对mysql请求的响应,包括以下步骤:

24、接收用户提供的约定字符集;

25、接收用户发送的经过所述约定字符集编码的mysql请求语句;

26、使用预设单字节编码字符集对所述mysql请求语句进行反序列化;

27、对反序列化后的所述mysql请求语句进行词法分析,获得分词;

28、识别分词的字面值类型,若字面值类型为二进制数据字面值,则将分词反二进制转义后记录为二进制数据,反之,则字面值类型必为字符串字面值,使用约定字符集对所述分词进行解码获得复原字符串;

29、将获得的二进制数据及复原字符串拼接,获得完整的mysql请求语句;

30、建立所述mysql请求语句的抽象语法树ast;

31、将抽象语法树ast上的mysql语法特征转换为sql语法特征;

32、在抽象语法树ast上进行命名空间映射修正;

33、将抽象语法树ast转换为sql语法的sql请求语句;

34、将所述sql请求语句提交数据库,获得数据库响应;

35、将所述数据库响应编码为mysql响应反馈给用户。

36、作为优选,识别分词的字面值类型的方法包括:

37、检查分词前是否存在字符串“_binary”,若存在字符串“_binary”,则判定分词为二进制数据字面值,反之,则判定分词为字符串字面值。

38、作为优选,进行词法分析的方法包括:

39、建立分词库;

40、将单字符与后续单字符逐个拼接,直到能够与所述分词库中的分词匹配;

41、匹配的全部单字符构成分词。

42、作为优选,建立分词库的方法包括:

43、列举所述mysql请求语句的全部关键词;

44、将所述关键词按照多种字符编码进行编码,所述关键词的编码作为分词,加入分词库,将分词库与对应的字符编码关联。

45、支持二进制数据字面值的词法分析系统,用于执行如前述的支持二进制数据字面值的词法分析方法,包括反序列化模块、分词模块和识别转换模块,所述反序列化模块接收用户提供的约定字符集,接收用户发送的经过所述约定字符集编码的请求语句,使用预设单字节编码字符集对所述请求语句进行反序列化,所述分词模块对反序列化后的所述请求语句进行词法分析,获得分词,所述识别转换模块别分词的字面值类型,若字面值类型为二进制数据字面值,则将分词反二进制转义后记录为二进制数据,反之,则字面值类型必为字符串字面值,使用约定字符集对所述分词进行解码获得复原字符串,将获得的二进制数据及复原字符串拼接,获得完整的请求语句。

46、作为优选,所述识别转换模块识别分词的字面值类型时,执行以下步骤:

47、检查分词前是否存在预设标识符,若存在预设标识符,则判定分词为二进制数据字面值,反之,则判定分词为字符串字面值。

48、作为优选,所述分词模块存储有分词库,进行词法分析时,将单字符与后续单字符逐个拼接,直到能够与所述分词库中的分词匹配,匹配的全部所述单字符构成分词。

49、一种计算机系统,所述计算机系统包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如前述的支持二进制数据字面值的词法分析方法。

50、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如前述的支持二进制数据字面值的词法分析方法。

51、本发明的有益技术效果包括:通过先使用单字节编码字符集对请求语句进行反序列化,获得单字符内容,而后使用词法分析分词,即能够复原出原本的请求语句中的关键词,同时也能够正确的复原二进制数据,将复原出的数据进行分类处理,即能够获得完整的请求语句,实现支持二进制数据字面值的词法分析,保障请求语句的正确执行;通过建立专用的分词库实现复原出的单字符的准确识别;通过对sql请求转码后再进行响应,能够使mysql数据库实现对sql请求的响应。

52、本发明的其他特点和优点将会在下面的具体实施方式、附图中详细的揭露。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1