词汇元素也叫词位被用于描述语言结构的句法
正则表达式符号:
符号                         含义

ID=re                    在正则表达式中ID被定义为re
|                         替代
re?                     出现re的次数为0或者1次
re*                      出现re的次数为0或者更多次
re+                      至少出现一次
(re)                     分组
[chars]                  匹配chars中含有的任何字符
[x-y]                     字符串集范围从x到y

抽象句法符号:
符号                            含义

::=                         被定义为
|                            替换
[[X]]                       X至多出现一次
{{X}}                       X出现0次或多次
{{X}}+                      X至少出现一次
((X|Y))                     分为X组或者Y组
abc                         关键词终端符号abc
INTEGER                     终端符号以外的关键词
xyz                         非终端符号
^:a:int32^n: 定义一个整形长度为n的数组a

词位
SCADE能用几种符号去描述值。整形能被写为二进制、八进制、十六进制值和与一些表达式混合使用。它被当做前缀或者无类型。
非十进制整形字符被当做无符(通常被当做负数)。浮点型用十进制或者科学计数符号表示。字符被描述为标准的ASCII码。

DIGIT2 =[0-1]
DIGIT8 =[0-7]
DIGIT10 =[0-9]
DIGIT16 =[a-f][A-F][0-9]INTEGER2 =0b DIGIT2+  #二进制
INTEGER8 =0 DIGIT8+   #八进制
INTEGER10 =0 | ([1-9]DIGIT10*) #十进制
INTEGER16 =0x DIGIT16+#十六进制
INTEGER =INTEGER2|INTEGER8|INTEGER10|INTEGER16
TYPED_INTEGER= INTEGER(_i|_ui)(8|16|32|64)#定义整形的长度和类型EXPONENT =[eE][+-]? DIGIT10+;#科学计数法
FLOAT =DIGIT10+.DIGIT10*EXPONENT?|DIGIT10*.DIGIT10+EXPONENT?#浮点类型
TYPED_FLOAT=FLOAT(_f32|_f64)#定义浮点类型的字节长度LETTER =_|[a-z]|[A-Z]#字母
ALPHANUMERIC=DIGIT10|LETTER#字母数字组合
WORD =LETTER ALPHANUMERIC* #单词是字符与字母与数字组合
CHARACTER=ALPHNUMERIC|SPACE|[!"$#&'()*+,-./:;<=>?@[]\^`|{}~]# 字符
CHAR='CHARACTER'|'\x DIGIT16 DIGIT16';
ID=WORD;
NAME='WORD;

符号列表
<> <= >= << >> = < > () [] {} -> ::  .. ;   , . : ^ @ # _ | + - * /

$符号被作为操作的名字。
字首操作符

PREFIXOP ::=$+$|$-$|$*$|$/$|$mod$|$=$|$+$|$<>$|$<$|$>$|$<=$|$>=$|$@$|$times$|$and$|$or$|$xor$|$land$|$lor$|$lxor$|$lsl$|$lsr$|+$|-$|not$|$or$|lnot$|reverse$

关键字列表

abstract,actived,and,assume,automation,bool,case,char,clock,const,default,do
,else,elseif,emit,end,enum,every,flase,fby,final,flatten,float,float32,float64,fold,foldi,foldw,foldwi,function,
guarantee,group,if,imported,initial,int8,int16,int32,int64,integer,is,land,lnot,lor,lsl,lsr,last,let,
make,map,mapfold,mapfoldi,mapfoldw,mapfoldwi,mapi,mapw;
mapwi,match,merge,mod,node,not,numeric,of,onreset,open,or,package,parameter,pre,private,probe,public,
restart,resume,returns,reverse,sensor,sig,signed,specialize,state,synchro,
tel,them,times,transpose,true,type,uint8,uint16,uint32,uint64,unless,unsigned,until,var,
when,where,with,xor

注意关键词:onreset,abstract,parameter被保留但未被使用

注释:
单行注释开始用“--”
多行注释开始“\*”,结束“*\”

程序

pragma ::=#progma CHARACTER*#end|#ALPHANUMERIC+

程序和包

path ::=ID{{::ID}}
path_id ::=[[path ::]]ID
package_decl ::=package[[visibility]] ID {{decls}} end;

七中顶级申明:

decls  ::=open path;package_declgroup_blocktype_blockconst_blocksensor_blockusr_op_decl 

一个包不能被打开多次,即使是不同的路径。一个包不能打开本身。

例子:
申明一个合格的路径:

package P1const foo :int16 =3;
end;package     P2const bar : int16=4;
end;const foobar : int16=P1::foo+P2::bar;

算法解析:打开指令将包括Q::R包进行申明而不是P::R包,由于这是第一次出现的R中的封装结构选自B开始

package Ppackage R...end;
end;package Qpackage R...end;package Sopen R...end;
end;

安装包中的申明不是相对的:

package P1open P1;constiC1: T1 =2;package P1typeT1=int32;
end;
end;

错误源于打开多次申明:识别码foo被用作常量和类型名为foo的发生冲突通过打开指令。

package P1type foo =int16;
end
open P1;
const foo:bool =true;

一个打开的包中的子包不能使用open指令。P2包中的第二个申明在这个程序是有效的,因为P1中的P2不可见:

package P1package P2...end;
end;
open P1;
package P2...
end;

正在打开的包是不可及:申明的P1包下被打开的P2包是不被考虑的,当打开后者。常量foo不被识别在foobar的定义中,出现一个错误:

package P1package P2const foo:int32 =0;end;open P2;const bar:int32=foo+1;
end;
open P1;
const foobar:int32=foo*2;


Scade——学习笔记相关推荐

  1. Scade——学习笔记(4)

    条件模块: 在当前循环中,当控制流依赖一个可计算条件时,条件模块是一个方便的表达方法. clock_block ::=active [[id]]((if_block|match_block))if_b ...

  2. Scade——学习笔记(2)

    属性 一些申明可能会给可见和可用的属性目标, visiblity ::=private|public#可视化 external ::=imported;#外部 interface_status ::= ...

  3. Scade——学习笔记(5)

    表达式:  表达式是Cade语言的基本块.表达式允许流的联合仅仅通过申明在一个周期内应该做什么: expr ::= id_expr | atom | list_expr | tempo_expr | ...

  4. Scade——学习笔记(3)

    用户定义操作 用户定义是面向过程语言提供最基本的句法.它们允许重用之前在Model中定义的操作. 用户定义操作: user_op_decl ::=op_kind interface_status ID ...

  5. 系统工程(SE)学习笔记(番外篇之一)——Capella使用体会兼谈SE工具

    系统工程(SE)学习笔记(番外篇之一)--Capella使用体会兼谈SE工具 零.Capella简介 壹. Capella的优势 贰.Capella的缺点 叁. 生态环境 肆. 总结 说到SE,就不能 ...

  6. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

最新文章

  1. C# DataGridView控件用法
  2. access 按日期分列_excel的分列功能居然这么强大,赶紧收藏起来
  3. python序列类型唯一的映射类型_python2.x学习笔记(8)-映射和集合类型
  4. UOJ#449. 【集训队作业2018】喂鸽子 min-max容斥,FFT
  5. 30道经典SQL面试题讲解(1-10)
  6. React开发(257):react项目理解 ant design model提示问题
  7. 将String转换成InputStream
  8. Angular / RxJs我应该何时退订`Subscription`
  9. 深度学习:词嵌入Embedding
  10. cpu顶盖怎么看步进_【有趣】第19期:如何从CPU顶盖获取有用信息(上)?
  11. 英语学习详细笔记(十)形容词
  12. GAN·生成对抗网络——札记2-读《生成式对抗网络 GAN 的研究进展与展望》
  13. Linux usb 5. usbip (USB Over IP) 使用实例
  14. 跑跑卡丁车,网络中断问题
  15. 15-构造函数及原型
  16. android 涟漪背景,Android 水波效果 | 涟漪效果 实现
  17. 续航超1000km,极氪成为宁德时代麒麟电池全球量产首发品牌 | 美通社头条
  18. 从后端开发转大数据开发怎么样?
  19. MySQL--函数--使用/示例
  20. linux读取sd卡文件数据,Linux系统和SD卡读写部分程序.doc

热门文章

  1. jdbc连接h2操作
  2. Window11新机激活步骤(零基础)
  3. 详解TableStore模糊查询——以订单场景为例
  4. 一个关于kindle固件修改的问题
  5. Innovasys实用教程(新手教学实用教程):如何在软件当中自定义表格边框
  6. 获取手机信号强度,包括WiFi,2G,4G
  7. 用回款考核项目经理意味着什么?
  8. SUSE系统修改静态IP
  9. 【VUE】Vue动态路由匹配路由
  10. Web信息系统采用浏览器 服务器结构,基于web浏览器服务器框架体系教材管理系统.doc...