BCL工程造价计算描述语言及其编译执行方法技术

技术编号:9794433 阅读:217 留言:0更新日期:2014-03-21 18:36
一种BCL工程造价计算描述语言及其编译执行方法,包括三方面内容:1、一种BCL工程造价计算描述语言,由设计描述具体计算算法规则的代数式及扩展运算表达式结构,即EL表达式和分析工程造价计算需求,确定除EL表达式以外的其它计算逻辑单元构成;2、一种BCL语言的编译执行装置,包括:BCL编译器装置、BCL脚本解析装置和BCL执行器装置;3、一种BCL工程造价计算描述语言的编译执行方法。本发明专利技术可真实的还原费用计算过程,便于用户直观浏览费用的生成过程和数据来源等内容。除此之外,所述BCL脚本解析装置提供BCL对象集合与BCL脚本文件之间的相互转换功能,实现一次生成多次执行,从而有效提高执行效率。

【技术实现步骤摘要】
工程造价计算描述语言BCL的编译执行装置及编译执行方法
本专利技术属于工程造价计算领域,具体涉及一种工程造价计算描述语言BCL的编译执行装置及编译执行方法,实现工程造价计算并还原费用计算过程进行直观验证。
技术介绍
计算描述语言是一种由标准代数式或代数式组扩展而来的可伸缩式的编程语言,它符合一定文法要求,能够用于解决各种应用领域的计算问题。区别于其它领域,工程造价领域的计算给计算描述语言提出了新的需求。首先,工程造价计算数据额度往往很大,且各阶段要求的精度不一。现有工程造价计算方法采用的浮点数运算存在天生的精度问题,势必形成数据误差,导致难以应对严格的费用审查。其次,工程造价计算数据具备层次性和个别性,决定了以简单数学表达式为导向的现有计算方式已无法满足需求,设计具备一定结构和规则的计算逻辑单元势在必行。目前,现有计算描述语言针对通用计算需求而设计,无法应对工程造价计算需求。它是将表达式作为唯一计算逻辑单元,计算流程由具有严格顺序的表达式序列表示。当面临大数据量或复杂算法的计算需求时,难以直观理解计算过程,且容易造成失误。同时,由于现有计算描述语言的编译执行装置在接收并处理计算请求后,只输出计算结果值,而计算过程及过程数据无法体现,导致用户不能直观验证数据的正确性、费用审核不便。
技术实现思路
本专利技术旨在提供一种简单易用、且执行高效的工程造价计算描述语言BCL的编译执行装置及编译执行方法,实现在满足复杂工程造价计算需求的同时,有效记录并还原工程造价计算过程,解决计算结果正确性无法直观验证问题。所述工程造价计算描述语言BCL,它能独立于不同产品、项目,具有开发语言无关性和平台无关性。其实现过程包括了:(1)设计描述具体计算算法规则的代数式及扩展运算表达式结构,即EL表达式;所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记;它在沿袭传统代数表达式运算特点的同时,支持用于包含多种表达式选择的条件选择运算和完成具体计算规则的函数运算在内的其它高级运算功能。与传统代数运算不同,所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数据值;所述条件选择表达式以#{和}作为起始和结束标记,其内部包含多个条件分支和至多一个缺省条件分支,每个分支对应一个EL表达式,整个条件选择表达式的取值为当前被激活条件分支对应的EL表达式计算结果,如:所述函数运算定义了具体的计算规则,以满足工程造价特定计算需求;其语法结构与C语言兼容,并支持BCL的扩展数据类型;除此之外,所述函数的调用还支持把EL表达式作为参数进行输入,能够实现指定工程数据范围与EL表达式的动态绑定,进而减少表达式代码冗余,语法格式为:sum(数据源标记,数据源包装名,?EL表达式);(2)分析工程造价计算需求,确定除EL表达式以外的其它计算逻辑单元;通过对造价工程数据及计算算法、过程的总结归纳,得出任何工程的工程造价复杂计算算法都可分解为最小的原子计算逻辑单元,即:EL表达式、宏表、变量、参数、数据源和包。其中,所述宏表能完整的表示一个具有递归、多字段、多记录、有汇总关系的计算规则。所述数据源用于描述一个工程的数据及其数据范围,它是BCL语言与工程数据的粘合剂,实现真实数据的传递。所述变量是包含数据源、数据过滤算法以及费用计算算法规则在内的具体费用计算结构,相较与仅包含具体数值的参数而言,变量的计算有一定的先后次序,更为复杂,但功能强大。所述包为其它原子计算逻辑单元的容器,能划定计算逻辑单元的作用范围,屏蔽命名冲突。基于上述工程造价计算描述语言BCL,为实现本专利技术的目的,本专利技术技术方案为:一种工程造价计算描述语言BCL的编译执行装置,包括:BCL编译器装置、BCL脚本解析装置和BCL执行器装置。所述BCL编译器装置用于对外界输入的待计算BCL元素进行编译处理,形成包含BCL语法树结构的BCL对象。内部过程涉及工程反应器模块、工程环境模块、工程文件解析模块、工程语法分析模块和分析上下文模块。其中,待计算BCL元素由工程文件解析模块生成,被传递给工程语法分析模块。依据BCL元素类型的不同,控制BCL元素编译,获取相应待计算EL表达式集合,所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记;所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数据值;在分析上下文模块的协助下,对其进行词法和语法分析,生成被称之为BCL语法树的内存对象,并关联到相应BCL对象中。其中,所述BCL元素是最小待计算单元,内部包含描述计算算法规则的EL表达式集合。与BCL语言体系中的原子计算逻辑单元相对应,BCL元素至少应包含BCL包元素、BCL变量元素、BCL宏表元素、BCL记录元素、BCL字段元素、BCL参数元素和BCL数据源元素七种。其中,BCL包元素作为其它元素的容器存在,不具备值表达式。而BCL变量元素包含BCL数据源元素对象、过滤表达式和值表达式,通过执行过滤表达式,可从数据来源中筛选形成符合条件的数据范围,应用于其值表达式的计算过程当中。所述BCL脚本解析装置包含了BCL脚本文件生成器和脚本解析器,用于实现BCL对象集合与BCL脚本文件之间的相互转换,能够有效记录或还原指定BCL对象,避免在同一计算需求下重复编译处理,有效减少工程造价计算时间。所述BCL执行器装置在经编译处理之后,解释执行生成的BCL对象,将过程数据和计算结果分别存储在BCL语法树结点和BCL对象当中。BCL执行器装置内部需包含BCL对象计算模块、结点计算模块、运行上下文模块、函数注册器模块和数据包装模块。其中,BCL对象计算模块控制BCL对象的解释执行过程,利用结点计算模块对BCL对象内部包含的BCL语法树中的每个结点进行计算,并将计算过程和过程数据记录在各结点当中,进而获取计算结果数据,完成执行任务。一种工程造价计算描述语言BCL的编译执行方法,其步骤如下:第一步:分析BCL元素,获取待计算EL表达式集合;所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记;所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数据值;在沿袭传统代数表达式运算特点的同时,EL表达式包含多种条件选择表达式的条件选择运算和完成具体计算规则的函数运算;所述条件选择表达式以#{和}作为起始和结束标记,其内部包含多个条件分支和至多一个缺省条件分支,每个分支对应一个EL表达式,整个条件选择表达式的取值为当前被激活条件分支对应的EL表达式计算结果,如:所述函数运算定义了具体的计算规则,以满足工程造价特定计算需求;其语法结构与C语言兼容,并支持BCL的扩展数据类型;除此之外,所述函数的调用还支持把EL表达式作为参数进行输入,能够实现指定工程数据范围与EL表达式的动态绑定,进而减少本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201310687744.html" title="BCL工程造价计算描述语言及其编译执行方法原文来自X技术">BCL工程造价计算描述语言及其编译执行方法</a>

【技术保护点】
BCL工程造价计算描述语言及其编译执行方法,其特征在于:一种BCL工程造价计算描述语言,其实现过程包括:(1)设计描述具体计算算法规则的代数式及扩展运算表达式结构,即EL表达式;所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记;它在沿袭传统代数表达式运算特点的同时,支持用于包含多种表达式选择的条件选择运算和完成具体计算规则的函数运算在内的其它高级运算功能;与传统代数运算不同,所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数据值;所述条件选择表达式以#{和}作为起始和结束标记,其内部包含多个条件分支和至多一个缺省条件分支,每个分支对应一个EL表达式,整个条件选择表达式的取值为当前被激活条件分支对应的EL表达式计算结果,如:??#{???????>?条件1?:?EL表达式1?;???????>?条件2?:?EL表达式2?;???????>?:?EL表达式3;?????}?所述函数运算定义了具体的计算规则,以满足工程造价特定计算需求;其语法结构与C语言兼容,并支持BCL的扩展数据类型;除此之外,所述函数的调用还支持把EL表达式作为参数进行输入,能够实现指定工程数据范围与EL表达式的动态绑定,进而减少表达式代码冗余,语法格式为:sum(数据源标记,?数据源包装名?,??EL表达式);(2)分析工程造价计算需求,确定除EL表达式以外的其它计算逻辑单元;通过对造价工程数据及计算算法、过程的总结归纳,得出任何工程的工程造价复杂计算算法都可分解为最小的原子计算逻辑单元,即:EL表达式、宏表、变量、参数、数据源和包;其中,所述宏表能完整的表示一个具有递归、多字段、多记录、有汇总关系的计算规则;所述数据源用于描述一个工程的数据及其数据范围,它是BCL语言与工程数据的粘合剂,实现真实数据的传递;所述变量是包含数据源、数据过滤算法以及费用计算算法规则在内的具体费用计算结构,相较与仅包含具体数值的参数而言,变量的计算有一定的先后次序,更为复杂,但功能强大;所述包为其它原子计算逻辑单元的容器,能划定计算逻辑单元的作用范围,屏蔽命名冲突;一种BCL语言的编译执行装置,包括:BCL编译器装置、BCL脚本解析装置和BCL执行器装置;所述BCL编译器装置用于对外界输入的待计算BCL元素进行编译处理,形成包含BCL语法树结构的BCL对象;内部过程涉及工程反应器模块、工程环境模块、工程文件解析模块、工程语法分析模块和分析上下文模块;其中,待计算BCL元素由工程文件解析模块生成,被传递给工程语法分析模块;依据BCL元素类型的不同,控制BCL元素编译,获取相应待计算EL表达式集合,在分析上下文模块的协助下,对其进行词法和语法分析,生成被称之为BCL语法树的内存对象,并关联到相应BCL对象中;其中,所述BCL元素是本专利技术的最小待计算单元,内部包含描述计算算法规则的EL表达式集合;与BCL语言体系中的原子计算逻辑单元相对应,BCL元素至少应包含BCL包元素、BCL变量元素、BCL宏表元素、BCL记录元素、BCL字段元素、BCL参数元素和BCL数据源元素七种;其中,BCL包元素作为其它元素的容器存在,不具备值表达式;而BCL变量元素包含BCL数据源元素对象、过滤表达式和值表达式,通过执行过滤表达式,可从数据来源中筛选形成符合条件的数据范围,应用于其值表达式的计算过程当中;所述BCL脚本解析装置包含了BCL脚本文件生成器和脚本解析器,用于实现BCL对象集合与BCL脚本文件之间的相互转换,能够有效记录或还原指定BCL对象,避免在同一计算需求下重复编译处理,有效减少工程造价计算时间;所述BCL执行器装置在经编译处理之后,解释执行生成的BCL对象,将过程数据和计算结果分别存储在BCL语法树结点和BCL对象当中;为实现以上功能,BCL执行器装置内部需包含BCL对象计算模块、结点计算模块、运行上下文模块、函数注册器模块和数据包装模块;其中,BCL对象计算模块控制BCL对象的解释执行过程,利用结点计算模块对BCL对象内部包含的BCL语法树中的每个结点进行计算,并将计算过程和过程数据记录在各结点当中,进而获取计算结果数据,完成执行任务;一种BCL工程造价计算描述语言的编译执行方法,其步骤如下:第一步:分析BCL元素,获取待计算EL表达式集合;根据BCL元素类型的不同,采取不同的分析过程,包括:(1)若为BCL包元素,则先转向执行第四步...

【技术特征摘要】
1.工程造价计算描述语言BCL的编译执行装置,其特征在于:所述装置包括BCL编译器装置、BCL脚本解析装置和BCL执行器装置;所述BCL编译器装置用于对外界输入的待计算BCL元素进行编译处理,形成包含BCL语法树结构的BCL对象;内部过程涉及工程反应器模块、工程环境模块、工程文件解析模块、工程语法分析模块和分析上下文模块;其中,待计算BCL元素由工程文件解析模块生成,被传递给工程语法分析模块;依据BCL元素类型的不同,控制BCL元素编译,获取相应待计算EL表达式集合,所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记;所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数据值;在分析上下文模块的协助下,对其进行词法和语法分析,生成被称之为BCL语法树的内存对象,并关联到相应BCL对象中;其中,所述BCL元素是最小待计算单元,内部包含描述计算算法规则的EL表达式集合;与BCL语言体系中的原子计算逻辑单元相对应,BCL元素至少应包含BCL包元素、BCL变量元素、BCL宏表元素、BCL记录元素、BCL字段元素、BCL参数元素和BCL数据源元素七种;其中,BCL包元素作为其它元素的容器存在,不具备值表达式;而BCL变量元素包含BCL数据源元素对象、过滤表达式和值表达式,通过执行过滤表达式,可从数据来源中筛选形成符合条件的数据范围,应用于其值表达式的计算过程当中;所述BCL脚本解析装置包含了BCL脚本文件生成器和脚本解析器,用于实现BCL对象集合与BCL脚本文件之间的相互转换,能够有效记录或还原指定BCL对象;所述BCL执行器装置在经编译处理之后,解释执行生成的BCL对象,将过程数据和计算结果分别存储在BCL语法树结点和BCL对象当中;BCL执行器装置内部包含BCL对象计算模块、结点计算模块、运行上下文模块、函数注册器模块和数据包装模块;其中,BCL对象计算模块控制BCL对象的解释执行过程,利用结点计算模块对BCL对象内部包含的BCL语法树中的每个结点进行计算,并将计算过程和过程数据记录在各结点当中,进而获取计算结果数据,完成执行任务。2.工程造价计算描述语言BCL的编译执行方法,其步骤如下:第一步:分析BCL元素,获取待计算EL表达式集合;所述EL表达式是对计算算法规则的一个完整描述,以${和}作为起始和结束标记;所述EL表达式包含种类多元化的操作数,支持数值、字符串和变量等类型,其中,变量类型操作数是所述EL表达式支持动态数据挂接的典型体现,其值可以为外部对象的引用,也可以为执行阶段设定的具体数据值;在沿袭传统代数表达式运算特点的同时,EL表达式包含多种条件选择表达式的条件选择运算和完成具体计算规则的函数运算;所述条件选择表达式以#{和}作为起始和结束标记,其内部包含多个条件分支和至多一个缺省条件分支,每个分支对应一个EL表达式,整个条件选择表达式的取值为当前被激活条件分支对应的EL表达式计算结果,如:所述函数运算定义了具体的计算规则,以满足工程造价特定计算需求;其语法结构与C语言兼容,并支持BCL的扩展数据类型;除此之外,所述函数的调用还支持把EL表达式作为参数进行输入,能够实现指定工程数据范围与EL表达式的动态绑定,进而减少表达式代码冗余,语法格式为:sum(数据源标记,数据源包装名,?EL表达式);根据BCL元素类型的不同,采取不同的分析过程,包括:(1)若为BCL包元素,则先转向执行第四步;所述包为其它原子计算逻辑单元的容器,能划定计算逻辑单元的作用范围,屏蔽命名冲突;再将该...

【专利技术属性】
技术研发人员:廖成慧万慧建欧阳强郝海风于雪刘梦清
申请(专利权)人:江西博微新技术有限公司
类型:发明
国别省市:

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

1