[发明专利]提高PL/SQL语言解释器执行效率的方法及装置有效
| 申请号: | 201910255875.9 | 申请日: | 2019-04-01 |
| 公开(公告)号: | CN110018829B | 公开(公告)日: | 2022-11-11 |
| 发明(设计)人: | 崔晓远;高新亮;武喜亮;卢九樨;金正皓 | 申请(专利权)人: | 北京东方国信科技股份有限公司 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王庆龙;苗晓静 |
| 地址: | 100102 北京市朝阳区*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 提高 pl sql 语言 解释 执行 效率 方法 装置 | ||
本发明实施例提供一种提高PL/SQL语言解释器执行效率的方法及装置,所述方法包括:对PL/SQL语言源代码进行词法分析,对词法分析产生的单词token逐一进行语法语义分析,获得符合语法语义规则的结果信息;对所述符合语法语义规则的结果信息中的表达式逐一进行计算因子类型判断,根据计算因子类型判断结果生成可执行语法树对象;通过遍历所述可执行语法树对象执行所述PL/SQL语言源代码中的计算逻辑。本发明实施例提在生成可执行语法树的过程中增加计算因子类型判断,并在可执行语法树的类结构中增加执行接口,无需开发与抽象语法树对应的执行器类,可减少执行过程中的分支判断次数,从而提升解释器的执行效率。
技术领域
本发明实施例涉及计算机程序设计技术领域,更具体地,涉及一种提高PL/SQL语言解释器执行效率的方法及装置。
背景技术
解释器是一种计算机程序,能够把高级编程语言逐行解释并运行,每翻译一行程序就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。目前大多数解释器的实现方法是,通过词法分析、语法分析和语义分析对源代码进行解析,产生抽象语法树,然后创建与抽象语法树结构对应的执行器类,最后,通过遍历抽象语法树实现执行器类计算逻辑。对于PL/SQL(Procedural Language/Structured Query Language)语言,抽象语法树中的语句和表达式种类很丰富,因此,执行器类包含多个执行器子类,执行器子类的种类也很丰富。
现有PL/SQL语言解释器的实现方案是将数据结构与算法分离的方式,即将抽象语法树和执行器类分离,在架构上是低耦合的。由于大多数执行器类都可以计算不止一种类型的抽象语法树,执行器类在实现向下递推的过程中需要对传入的抽象语法树节点的数据类型进行判断,如图1所示为现有技术中加法表达式执行器的判断逻辑示意图。
由于PL/SQL支持的数据类型比较丰富,包括Int、Long、Double、Number、Char、Varchar、Date、Timestamp、Lob、String等10余种基础类型,还支持数组、记录和游标等复合类型,执行器类需进行多次冗余的判断,例如,对于一个双目表达式执行器子类,若实现10种基础数据类型,则需要10*10=100次的判断,若实际传入的表达式类型恰好是最后一个判断分支,则会浪费99次判断的时间,若此表达式处在10万行的游标遍历计算中,则会浪费上千万次的判断时间。判断完成后执行器类才进入正确的计算逻辑。目前这种低耦合的解释器在运行过程中会出现大量冗余判断,执行效率低下。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的提高PL/SQL语言解释器执行效率的方法及装置。
第一方面,本发明实施例提供一种提高PL/SQL语言解释器执行效率的方法,包括:
对PL/SQL语言源代码进行词法分析,对词法分析产生的单词token逐一进行语法语义分析,获得符合语法语义规则的结果信息;
对所述符合语法语义规则的结果信息中的表达式逐一进行计算因子类型判断,根据计算因子类型判断结果生成可执行语法树对象;
通过遍历所述可执行语法树对象执行所述PL/SQL语言源代码中的计算逻辑。
第二方面,本发明实施例提供一种提高PL/SQL语言解释器执行效率的装置,包括:
解析模块,用于对PL/SQL语言源代码进行词法分析,对词法分析产生的单词token逐一进行语法语义分析,获得符合语法语义规则的结果信息;
可执行语法树生成模块,对所述符合语法语义规则的结果信息中的表达式逐一进行计算因子类型判断,根据计算因子类型判断结果生成可执行语法树对象;
计算逻辑执行模块,通过遍历所述可执行语法树对象执行所述PL/SQL语言源代码中的计算逻辑。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京东方国信科技股份有限公司,未经北京东方国信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910255875.9/2.html,转载请声明来源钻瓜专利网。





