[Scade One] Swan 图形化建模技术的形式化文法

Scade One 中使用的建模语言 Swan 虽然是基于 Scade SuiteScade 6的拓展,但在图形化语言特性的技术实现方面作了较大变化。对图形化建模部分,从由 RelaxNG schema 定义图形化Scade内容的组成1,到使用ENBF 形式化地定义 Swan 的图形化语法结构,使 Scade 技术的形式化语法定义范围,由文本标记法表达拓展到了图形化标记法表达。

Swan 图形化建模部分的EBNF形式化文法定义

在 Swan 的语言定义中,在词法部分新引入了diagram 关键字。diagram 是新引入的描述图形化建模程序的语法符号。在Swan 中,对图形化建模部分的 EBNF 语法如下描述

scope ::= ...
        | diagram {{object}}
        ...

object ::= (description [[local_objects]])
local_objects ::= where {{ object }}
description ::= [[LUNUM]] [[LUID]] graph_item 
                | def_by_case 
                | scope_section 
graph_item ::= expr expr 
            | def lhs 
            | block operator_block 
            | group [[group_operation]]
            | wire connection => connection {{, connection }}

group_operation ::= ()
                | byname 
                | bypos 

connection ::= port [[group_adaption]]
            | () 

port ::= instance_id 

instance_id ::= LUNUM | LUID | self 

在 Swan 中,对图形化表达的模型,以如上的文法形式描述。这一做法与Scade Suite的做法有着显著的不同。在 Scade Suite 中,Scade 模型的图形化表达没有以 EBNF 形式化文法的方式描述,而是以 RelaxNG schema 规则描述的 XML 内容元素的结构组成规则。而在 Scade One 中,XML 文件持久化格式不再采用,对建模语言,使用ENBF 定义,对工具中的配置文件使用 JSON 定义。

因此,在Scade One产品中,对语言部分语法(Syntax)的形式化定义的范围从原有的文本标记法(文本Scade模型),拓展到了图形化标记法(图形化Scade模型)。语言的定义形式更加统一。

Swan 图形化建模程序样例

Swan 语言图形化标记法形式的模型样例如下

node integrator ( i : f loat64 ) returns ( o : f loat64 ) {
    diagram
        (#1 $adder_1 block ( funct ion a , b = > a + b ))
        (#2 $delay_1 expr pre #20
          where (#20 group))
        (#3 $init_1 expr 0.0 -> #30
          where (#30 group))
        (#4 expr i )
        (#5 def o )
        (wire #2 = > #30)
        (wire #1 = > #20 , #5)
        (wire #4 = > #1.(1))
        (wire #3 = > #1.(2))
}

可以注意到 Swan 中的图形化程序的文本表示形式,相比 Scade Suite 中图形化模型的 XML 文件持久化形式(XScade)更加紧凑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值