一种基于脚本语言的引擎系统技术方案

技术编号:37210698 阅读:12 留言:0更新日期:2023-04-20 23:01
本发明专利技术公开了一种基于脚本语言的引擎系统,包括计算引擎模块与功能模块,所述功能模块包括词法分析器模块、语法分析器模块及执行引擎模块,且执行引擎模块连接有内嵌函数库,其中所述计算引擎模块用于为第三方应用提供服务,所述词法分析器模块用于对输入的脚本代码进行词法分析,分析结果正确时输入语法分析模块,所述语法分析器模块用于对词法分析器模块产生的分词进行语法分析处理,正确时输出语法树,所述执行引擎模块用于对语法分析器模块分析阶段产生的多个语法树进行评估执行。本发明专利技术所提出的基于脚本语言的引擎系统关键字很少,没有类型及变量的声明,语法简单;专为数值计算而设计,类型只有双浮点型,底层计算直接采用c/c++实现。采用c/c++实现。采用c/c++实现。

【技术实现步骤摘要】
一种基于脚本语言的引擎系统


[0001]本专利技术涉及计算机语言
,尤其涉及一种基于脚本语言的引擎系统。

技术介绍

[0002]脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。
[0003]计算机世界的脚本语言很多,典型的有visualbasic,javascript等,但这些脚本语言并不是专精于数值计算相关,在应用数值计算行业(如金融,统计)时还具有以下缺陷:1、关键字多,语法相对复杂,非编程专业人员需经过一段时间的培训方可掌握;2、非专职于数值计算而设计,执行计算的效率低下;3、对于数值计算的扩展和优化空间具有局限性;4、使用上不够简洁高效。据此,本申请提出一种基于脚本语言的引擎系统。

技术实现思路

[0004]本专利技术的目的是为了解决现有技术中存在的缺点,而提出的一种基于脚本语言的引擎系统。
[0005]为了实现上述目的,本专利技术采用了如下技术方案:
[0006]一种基于脚本语言的引擎系统,包括计算引擎模块与功能模块,所述功能模块包括词法分析器模块、语法分析器模块及执行引擎模块,且执行引擎模块连接有内嵌函数库,其中所述计算引擎模块用于为第三方应用提供服务,所述词法分析器模块用于对输入的脚本代码进行词法分析,分析结果正确时输入语法分析模块,所述语法分析器模块用于对词法分析器模块产生的分词进行语法分析处理,正确时输出语法树,所述执行引擎模块用于对语法分析器模块分析阶段产生的多个语法树进行评估执行,并获得最终的结果,所述内嵌函数库用于将部分标准的、频繁使用的基础数值计算功能直接封装成语言级别的内嵌函数。
[0007]优选地,所述词法分析模块分析脚本代码词法过程中,分析结果错误时,则报告具体错误代码的行号和列号,并将错误描述展示出来。
[0008]优选地,所述语法分析模块分词语法分析过程中,发现语法错误时,则报告具体错误代码的行号和列号,并将错误描述展示出来。
[0009]优选地,所述词法分析模块分析手段为:根据词法规则中给出的正则表达式进行扫描匹配,若存在匹配不合法的立即产生错误报告。
[0010]优选地,所述语法分析模块根据语法规则进行处理,并采用LALR分析算法进行处理。
[0011]优选地,所述内嵌函数库的内嵌函数由C/C++实现,并提供给执行引擎模块直接调用。
[0012]本专利技术具有以下有益效果:
[0013]1、关键字很少,没有类型及变量的声明,语法简单,写计算表达式就如同书写计算
公式;
[0014]2、专为数值计算而设计,类型只有双浮点型,底层计算直接采用c/c++实现;
[0015]3、对于复杂数值计算的或性能不够优化的计算,本语言可以直接通过扩展内建函数来实现,内建函数都是采用C/C++直接实现的;
[0016]4、由于专为数值计算而设计,无类型和变量声明,直接写计算表达式即可。
附图说明
[0017]图1为本专利技术提出的一种基于脚本语言的引擎系统的系统结构框图;
[0018]图2为本专利技术提出的一种基于脚本语言的引擎系统运行时的流程示意图。
具体实施方式
[0019]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。
[0020]在本专利技术的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本专利技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本专利技术的限制。
[0021]参照图1,一种基于脚本语言的引擎系统,包括计算引擎模块与功能模块,功能模块包括词法分析器模块、语法分析器模块及执行引擎模块,且执行引擎模块连接有内嵌函数库,其中计算引擎模块用于为第三方应用提供服务,需要说明的是,计算引擎模块设有对外提供服务的接口,可以连接外部的终端工具或第三方应用。
[0022]词法分析器模块用于对输入的脚本代码进行词法分析,词法分析模块分析手段为:根据词法规则中给出的正则表达式进行扫描匹配,若存在匹配不合法的立即产生错误报告。分析结果正确时输入语法分析模块。
[0023]语法分析模块根据语法规则进行处理,并采用LALR分析算法进行处理。语法分析器模块用于对词法分析器模块产生的分词进行语法分析处理,正确时输出语法树,执行引擎模块用于对语法分析器模块分析阶段产生的多个语法树进行评估执行,并获得最终的结果,内嵌函数库用于将部分标准的、频繁使用的基础数值计算功能直接封装成语言级别的内嵌函数。内嵌函数库的内嵌函数由C/C++实现,并提供给执行引擎模块直接调用。需要说明的是,为了提供执行的效率,有些计算功能直接作为语言的内嵌函数,供执行引擎直接调用,所以执行引擎模块直接与内嵌函数库连接。
[0024]进一步的,通过使内嵌函数由C/C++实现,并提供给执行引擎直接调用,能够有效提升本脚本语言的执行效率,且该内嵌函数库可以根据需要随时进行扩展以提升语言的计算性能。
[0025]词法分析模块分析脚本代码词法过程中,分析结果错误时,则报告具体错误代码的行号和列号,并将错误描述展示出来。语法分析模块分词语法分析过程中,发现语法错误时,则报告具体错误代码的行号和列号,并将错误描述展示出来。
[0026]本专利技术应用过程中,参照图2所示,当脚本代码从外部终端输入时,接着将脚本代码提交给词法分析器模块进入词法分析阶段,分析过程中若发现错误则报告具体错误代码
的行号和列号,将错误描述展示出来,指导用户在终端上进行修改后重新进入词法分析器;
[0027]若没有错误,则自动进入语法分析模块的语法分析阶段,在此阶段工作过程中若发现有语法错误,同样会将错误描述展示出来,指导用户在终端上进行修改后再从头开始;若没有错误,则生成语法树,再将语法树作为执行引擎的输入,将最后的计算结果输出。
[0028]具体实施过程如下所示:
[0029]>>
[0030]>>sin30+cos30
[0031]>>
[0032]the calc result:1.36603
[0033]>>
[0034]>>log10
[0035]the calc result:1
[0036]>>
[0037]>>log(2,8)
[0038]>>
[0039]the calc result:3
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于脚本语言的引擎系统,包括计算引擎模块与功能模块,其特征在于,所述功能模块包括词法分析器模块、语法分析器模块及执行引擎模块,且执行引擎模块连接有内嵌函数库,其中所述计算引擎模块用于为第三方应用提供服务,所述词法分析器模块用于对输入的脚本代码进行词法分析,分析结果正确时输入语法分析模块,所述语法分析器模块用于对词法分析器模块产生的分词进行语法分析处理,正确时输出语法树,所述执行引擎模块用于对语法分析器模块分析阶段产生的多个语法树进行评估执行,并获得最终的结果,所述内嵌函数库用于将部分标准的、频繁使用的基础数值计算功能直接封装成语言级别的内嵌函数。2.根据权利要求1所述的一种基于脚本语言的引擎系统,其特征在于,所述词法分析模块分析脚本代码词法过程中,分析结果错误时,...

【专利技术属性】
技术研发人员:高敏
申请(专利权)人:上海晟合坤信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1