Scade 语言词法介绍

Scade 6 是一种具备形式化语法与形式化语义的领域特定语言(注1)。自2008年发布(注5)起,在 Scade Suite 产品系列中语言定义方面到目前未产生重要的改变(注2)。在下面的内容中将介绍Scade 语言的词法(注3)。

注1:在巴黎高师课程《同步反应式系统》中,在第一节课"使用Lustre面向嵌入式系统编程"相关的参考材料TASE 2017中提到了Scade语言语法及语义具备形式化定义的特点。
注2:2024年发布的下一代Scade产品Scade One中,虽然新语言SwanScade 6的拓展,但由于其并不作为Scade Suite产品的内容,因此仍可认为Scade Suite中的语言技术没有变化。
注3: 详细内容可参考scade suite student 2025R1
注5:Scade 6发布时间可参考 Scade 在 ERTS 2008 发布的SCADE 6: 面向高安全软件开发的基于模型的解决方案

词法概念

词法规则(lexical rule)是编程语言中的概念,定义如何将源代码的字符序列(字符串)转换为一系列有意义的基本单元(称为 词法记号,Token)的规则。这一过程被称为 词法分析(Lexical Analysis),由词法分析器完成。

词法规则与语法规则的区别

这里需要补充词法概念与语法概念的区别。在一些解析器生成工具,比如"ocamllex + menhir"、"flex + bison"之类的技术组合中,词法规则(.l)与语法规则(.y)由不同的描述构成。需要注意两者概念的区别:

  • 词法规则:关注字符如何组成基本单元(Token),属于语言的"单词"层面。
  • 语法规则(syntax rule):定义 Token 如何组合成合法的程序结构(如表达式、语句),属于"句子"层面。例如,语法规则会检查 if (x > 0) 是否符合条件语句的结构,而词法规则仅确保 if(x 等被正确识别为 Token。

Scade 语言词法规则

Scade 6 的词法可参考 Scade Suite 相关文档的描述(注4)。其中,主要部分包括关键字列表、特殊符号列表、正则表达式描述的词素、注释与pragma的形式定义等。

注4:ANSYS SCADE Suite学生版 安装后,随附文档中的语言参考材料中描述了语言词法。

关键字列表

对关键字列表部分的词法规则,描述的是在Scade 语言中作为特殊关键字的词。比如下面部分Scade关键字的flex 词法定义:

复制代码
...
flatten { return FLATTEN; }
map { return MAP; }
fold { return FOLD; }
mapi { return MAPI; }
foldi { return FOLDI; }
...

描述了 flatten, map, fold, mapi, foldi 在Scade语言中作为关键字。

特殊符号列表

特殊符号列表部分的词法规则,描述的是Scade语言中作为特殊符号的token。比如下面为部分Scade特殊符号的flex 词法定义:

复制代码
...
">>" { return DOUBLE_GT; }
"," { return COMMA; }
"{" { return L_BRACE; }
"}" { return R_BRACE; }
...

以上部分描述了>>, ,, {, } 在Scade语言中作为特殊符号token对待,并在词法中命名了相应的标识名字。

正则表达式描述的词素

对正则表达式描述的词素,如下面的flex词法定义片段:

复制代码
...
INTEGER10 (0|[1-9]{DIGIT10}*)
INTEGER16 0x{DIGIT16}+
...

上面的词法规则描述了Scade中十进制数和十六进制数的表达形式。

注释等内容的词法

对注释等内容的Scade词法描述,如下面的flex词法所示

复制代码
...
"/*" { BEGIN(COMMENT); }
<COMMENT>{
    \*"/" { BEGIN(INITIAL); } 
    .|\n 
}

"--".* 
...

描述了/* ... */-- ... 的形式,在Scade中可表达为注释。

相关推荐
fdtsaid1 个月前
Scade One - 将MBD技术从少数高安全领域向更广泛的安全嵌入式软件普及
mbse·lustre·scade·swan
fdtsaid1 个月前
ANSYS Swan 语言 forward 迭代(一) - 数组与矩阵遍历
lustre·scade·swan
fdtsaid2 个月前
Lustre 语言的 Rust 生成相关的工作
rust·lustre
fdtsaid3 个月前
Heptagon 迭代器
lustre·scade·heptagon
杭州华望MBSE5 个月前
数字赋能 自主创新 | 华望系统科技在2024年度“直通乌镇”全球互联网大赛上斩获大奖!
经验分享·学习·mbse·国产工业软件·互联网大会
rolt7 个月前
SysML案例-风力发电
mbse·sysml·系统工程
rolt7 个月前
SysML案例-清朝、火星人入侵地球
mbse·sysml·系统工程
rolt8 个月前
SysML图例-智能家居
mbse·sysml·系统工程
BGK1123588 个月前
系统工程建模MBSE
mbse