System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及核电厂仪控软件,具体涉及一种扩展条件块的同步数据流语言转换方法。
技术介绍
1、同步数据流语言lustre广泛用于核电等安全关键领域的软件开发,它能够以图形方式描述系统,并且具有严格的形式化定义,通常用来进行图形化算法建模。而在实际工程中软件通常运行在嵌入式设备中,需将lustre语言转换为偏底层的语言,例如核电设备通常使用的c语言。lustre语言和c语言特性差异很大,例如对于条件分支的实现,c语言有ifelse语句支持两个条件分支,switch case语句支持多个条件分支,而lustre语言使用表达式和时钟,采用if...then...else...的形式,仅支持两个条件分支,类似c语言中的switchcase语句,只能采用if嵌套的形式实现,条件分支情况越多,采用的if嵌套越多,实现起来越复杂且不直观。
技术实现思路
1、本专利技术的目的在于提供一种扩展条件块的同步数据流语言转换方法,解决了现有技术运行在嵌入式设备中,存在转换复杂的问题。
2、本专利技术通过下述技术方案实现:
3、一种扩展条件块的同步数据流语言转换方法,包括:
4、获取目标扩展条件块;所述目标扩展条件块用于表征待转换为同步数据流语言的条件块;
5、对目标扩展条件块进行校验,并获取校验结果;所述校验结果包括校验通过或校验不通过;
6、当所述校验结果为校验通过时,则对目标扩展条件块进行解析,生成包括目标扩展条件块语法结构的第一抽象语法树;
7、将所述第一抽象语法树转换为同步数据流语言语法结构的第二抽象语法树,并以所述第二抽象语法树生成同步数据流语言代码,完成同步数据流语言的转换。
8、在一种可能的实施方式中,所述目标扩展条件块为人机交互输入的扩展条件块或数据库预先存储的扩展条件块;
9、所述扩展条件块的语法结构包括条件块名称声明、条件块类型定义以及条件块返回值声明;
10、所述条件块名称声明设置为唯一标识符;
11、所述条件块类型定义包括if条件块以及match条件块;
12、所述条件块返回值声明定义了条件块的返回值,作为条件块的输出。
13、在一种可能的实施方式中,所述if条件块的形式设置为:if条件表达式then第一条件分支else第一条件分支;其中,条件表达式的类型设置为bool,第一条件分支设置为自定义语句或if嵌套;
14、所述match条件块的形式设置为:match枚举表达式with第二条件分支;其中,所述枚举表达式表示已定义的枚举类型,所述第二条件分支的形式设置为:枚举变量:自定义语句。
15、在一种可能的实施方式中,对目标扩展条件块进行校验,并获取校验结果,包括:
16、检查目标扩展条件块是否存在语法错误,若是,则确定校验结果为校验不通过,并结束转换流程,否则确定校验结果为校验通过。
17、在一种可能的实施方式中,当所述校验结果为校验通过时,则对目标扩展条件块进行解析,生成包括目标扩展条件块语法结构的第一抽象语法树,包括:
18、当所述校验结果为校验通过时,解析目标扩展条件块,以获取目标扩展条件块中的if条件块以及match条件块;
19、对if条件块执行第一转换以及对match条件块执行第二转换,以将目标扩展条件块转换为第一抽象语法树。
20、在一种可能的实施方式中,对if条件块执行第一转换,包括:
21、确定if条件块的输出参数,并将所述if条件块的输出参数作为第一抽象语法树中等式左值;所述if条件块的输出参数个数与等式个数相同;
22、将if条件块中条件变量的值赋给第一抽象语法树中条件变量的值;
23、获取if条件块的then_equation_list中输出参数的值,并将then_equation_list中输出参数的值赋给第一抽象语法树中等式左值为对应输出参数的then_expr;
24、获取if条件块的else_equation_list中输出参数的值,并将else_equation_list中输出参数的值赋给第一抽象语法树中等式左值为对应输出参数的else_expr;
25、针对第一抽象语法树中未赋值的then_expr以及else_expr,取节点变量声明中的默认值。
26、在一种可能的实施方式中,对match条件块执行第二转换,包括:
27、解析match条件块中的分支个数,并以所述match条件块中的分支个数为基础,将match条件块转换为至少一个if条件块;
28、在已有第一抽象语法树的基础上,将转换得到的if条件块执行第一转换,得到第一抽象语法树。
29、在一种可能的实施方式中,还包括if条件块的图形化表示方法以及match条件块的图形化表示方法。
30、在一种可能的实施方式中,所述if条件块的图形化表示方法,包括:
31、条件块整体用虚线圆角矩形框表示,在左上角编辑条件块名称;
32、条件表达式用实线椭圆框表示,在框内对条件表达式内容进行编辑;
33、用第一实线箭头连接条件表达式与then条件分支,用虚线粗箭头连接条件表达式与else条件分支;条件分支为嵌套的条件块或等式列表;
34、等式列表用实线直角矩形框表示,在框内对等式列表内容进行编辑。
35、在一种可能的实施方式中,定义match条件块的图形表示及编辑方法,包括:
36、条件块整体用虚线直角矩形框表示,在左上角编辑条件块名称;
37、枚举表达式用实线六边形框表示,在框内对枚举表达式内容进行编辑;
38、用第二实线箭头连接枚举实例与条件分支,条件分支为嵌套的条件块或等式列表;
39、等式列表用实线直角矩形框表示,在框内对条件分支内容进行编辑。
40、本专利技术提供的一种扩展条件块的同步数据流语言转换方法,提出的扩展条件块能够可以支持两个及以上条件分支,能够更加清晰直观的描述条件控制流的跳转关系;同时考虑到实际工程有将标准lustre语言转换为c语言的需求并且已实现,提出一种将条件块转换为等价的luste代码的方法,以达到不改变原有lustre到c代码生成器的目的;最后提出了一种条件块的图形表现方式及编辑方法,能够方便的对条件块进行图形建模。
本文档来自技高网...【技术保护点】
1.一种扩展条件块的同步数据流语言转换方法,其特征在于,包括:
2.根据权利要求1所述扩展条件块的同步数据流语言转换方法,其特征在于,所述目标扩展条件块为人机交互输入的扩展条件块或数据库预先存储的扩展条件块;
3.根据权利要求2所述扩展条件块的同步数据流语言转换方法,其特征在于,所述if条件块的形式设置为:if条件表达式then第一条件分支else第一条件分支;其中,条件表达式的类型设置为bool,第一条件分支设置为自定义语句或if嵌套;
4.根据权利要求3所述扩展条件块的同步数据流语言转换方法,其特征在于,对目标扩展条件块进行校验,并获取校验结果,包括:
5.根据权利要求4所述扩展条件块的同步数据流语言转换方法,其特征在于,当所述校验结果为校验通过时,则对目标扩展条件块进行解析,生成包括目标扩展条件块语法结构的第一抽象语法树,包括:
6.根据权利要求5所述扩展条件块的同步数据流语言转换方法,其特征在于,对if条件块执行第一转换,包括:
7.根据权利要求6所述扩展条件块的同步数据流语言转换方法,其特征在于,对
8.根据权利要求2所述扩展条件块的同步数据流语言转换方法,其特征在于,还包括if条件块的图形化表示方法以及match条件块的图形化表示方法。
9.根据权利要求8所述扩展条件块的同步数据流语言转换方法,其特征在于,所述if条件块的图形化表示方法,包括:
10.根据权利要求8所述扩展条件块的同步数据流语言转换方法,其特征在于,定义match条件块的图形表示及编辑方法,包括:
...【技术特征摘要】
1.一种扩展条件块的同步数据流语言转换方法,其特征在于,包括:
2.根据权利要求1所述扩展条件块的同步数据流语言转换方法,其特征在于,所述目标扩展条件块为人机交互输入的扩展条件块或数据库预先存储的扩展条件块;
3.根据权利要求2所述扩展条件块的同步数据流语言转换方法,其特征在于,所述if条件块的形式设置为:if条件表达式then第一条件分支else第一条件分支;其中,条件表达式的类型设置为bool,第一条件分支设置为自定义语句或if嵌套;
4.根据权利要求3所述扩展条件块的同步数据流语言转换方法,其特征在于,对目标扩展条件块进行校验,并获取校验结果,包括:
5.根据权利要求4所述扩展条件块的同步数据流语言转换方法,其特征在于,当所述校验结果为校验通过时,则对目标扩...
【专利技术属性】
技术研发人员:冯媛媛,杨斐,侯荣彬,马权,刘明星,蒋维,赵阳,梁根华,吴延群,李勇,刘盈,
申请(专利权)人:中国核动力研究设计院,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。