当前位置: 首页 > news >正文

Scade 语言概念 - 方程(equation)

在 Scade 6 程序中自定义算子(Operator)的定义、或数据流定义(data_def)的内容中,包含一种基本的语言结构:方程(equation)(注1)。在本篇中,将叙述 Scade 语言方程的文法形式,以及作用。

注1: 对 Scade 中的 equation, 或 equation set,在部分中文材料中翻译为等式与等式集。这里选择“方程”作为Scade 语言“equation”的翻译是考虑到:a) Scade 推出时面向的用户群为通常使用块状图形式编写自动控制算法的控制工程师,而在该领域,equation 与 equation set 的含义更倾向于方程与方程组。b) 在 ENS《同步反应式系统》课程中,在引出 Lustre 语言时,也是以“联立方程组有唯一解”的例子来引出同步数据流语言,因此 equation 与方程概念接近。c) Lustre 的主要设计者之一 Paul Caspi 的背景来自自动控制领域,其在设计 Lustre 时使用 equation 概念,更有可能指代方程。

方程的文法形式

方程在 Scade 6 文法中的定义如下:

equation ::= simple_equation| assert| emission| control_block return

在 Scade 文法中,对方程概念的含义进行了拓展,含义除了传统意义上的简单方程外,将断言语句、信号发射、控制块结构(状态机、条件块、匹配块)等也归类为方程的生成式(Production)组成。为了专注于方程的原生定义,本篇仅讨论“simple_equation”的生成形式。

"simple_equation"的文法形式如下:

simple_equation ::= lhs = expr

在内容组成方面,由等号左侧的部分(lhs, left hand side)与等号右侧的表达式构成。lhs 可以是 Scade 6 中合法的标识符列表或占位符,其文法形式如下

lhs ::= ( )| lhs_id {{ , lhs_id }}
lhs_id ::= ID| _

而表达式则为语言支持的表达式结构,在这里不作展开,仅列出表达式(expr)的顶层文法生成式

expr ::= id_expr
| atom
| list_expr
| tempo_expr
| arith_expr
| relation_expr
| bool_expr
| array_expr
| struct_expr
| mixed_constructor
| switch_expr
| apply_expr

例子

下面是 Scade 6 语言的片段

function caseOp(ival1, ival2, ival3, ival4: int8) returns (o: int8)o = (case ival1 of | 1: ival2 | 2: ival3 | _: ival4);

其中,o = (case ival1 of | 1: ival2 | 2: ival3 | _: ival4) 为方程。等号左侧的"o"为"lhs",等号右侧的(case ival1 of | 1: ival2 | 2: ival3 | _: ival4)list_expr 列表表达式(因为包含在"()"中)。

方程的使用场景

equation 在 Scade 6 可在如下场景中使用,比如自定义算子的定义体中:

opt_body ::= ;| equation ;| [[ signal_block ]][[ local_block ]]let {{ equation ; }} tel [[ ; ]]

或在数据流定义(dataflow definition)中:

data_def ::= equation ;| scope

相关文章:

  • BeckHoff--MES数据交互 MQ TRANCE API (MQ 追溯 API - 系统概述和命令参考)
  • STM32开发中,线程启动异常问题排查简述
  • Linux下的fuser用法简析
  • Qt(part 2)1、Qwindow(菜单栏,工具栏,状态栏),铆接部件,核心部件 ,2、添加资源文件 3、对话框
  • 2025年AI编程工具推荐
  • linux设备重启后时间与网络时间不同步怎么解决?
  • Bootstrap Blazor中实现富文本框Editor组件的内容导出为docx格式的Word文档
  • Spring Security深度解析:构建企业级安全框架
  • CCPC chongqing 2025 H
  • c++ 静态成员变量
  • xss漏洞学习
  • 什么是可恢复保险丝
  • ELF文件,静态链接(Linux)
  • 关于 ​​Thread 与 Runnable​​ 以及 ​​线程生命周期​​ 的详细说明与示例
  • 实战二:开发网页端界面完成黑白视频转为彩色视频
  • 6.7-leetcodeT3170
  • AcWing--数据结构1
  • 淘晶驰的串口显示屏T0 T1 K0 X2 X3 X5之间有何区别 各自的优势是啥 划分的依据是啥
  • CAN转PROFINET协议网关之PROFINET转CANfree组态秘诀
  • Go 语言 sync.WaitGroup 深度解析
  • aspnet网站开发实例/企业网站推广方法实验报告
  • 外包app公司不给源代码/长沙seo智优营家
  • 网站设置在哪里找到/广告推广投放平台
  • 少儿编程加盟哪个品牌好/伟哥seo博客
  • 高德vr全景地图下载/代做seo关键词排名
  • centos wordpress 建站教程/谷歌搜索指数查询